c语言中的Atoi函数
函数名:atoi
函数:将字符串转换成整数。
用法:#include stdlib.h
int atoi(const char * nptr);
程序示例:
#包含stdlib.h
#包含stdio.h
int main(void)
{
int n;
char * str = " 1234
n = atoi(str);
printf("string = %s integer = %d\n ",str,n);
返回0;
}
运行结果是:
字符串=1234整数=1234
C语言的atoi问题 Atoi函数参数是const char*,string[0]是char,不是char*。并且循环在atoi函数内部以' \ 0 '结束,所以atoi只能转换字符串。
如何用C语言实现atoi()函数 利用好百度。。。百度百科有词条atoi,里面有C语言实现的源代码(其实就是C,唯一的区别就是它的字符串定义为const,也就是说不允许在函数中改变这个字符串的内容)。
我在这里补充一个说明,简单解释一下源代码。
(同Internationalorganizations)国际组织
my_atoi(常量
茶
*str){
(同Internationalorganizations)国际组织
结果;
//保存返回的结果
(同Internationalorganizations)国际组织
信号
=
1;
//保存符号,默认为正。
//判断第一个数字是否合法。
if((* str = ' 0 ' * str = ' 9 ')| | * str = = '-' | | * str = = ' '){
//如果是-,符号变成-1,指针向右移动。
//如果是,指针向右移动(简而言之,指向第一个数字)
if(*str=='-'||*str==' '){
if(*str=='-')
信号
=
-1;
str
}
}
其他
返回
0;//第一个不是,-或者数字,非法返回0。
//这就是变换,数学题就不解释了。
while(*str='0'*str='9 ')
结果
=
结果* 10(*字符串
-'0');
返回
信号*结果;
}
但是,这个程序,如果字符串是非法的,也会返回值,直到出现非法字符。
比如公元前123年
返回值是123。
c语言atoi函数源代码 c语言atoi函数源代码:
int atoi(char n[])
{int i,y = 0;
for(I = 0;n[I]= ' 0 ' n[I]= ' 9 ';我)
y = y * 10n[I]-' 0 ';
返回y;
}
c语言atoi函数的帮助 Abcd换算值?你要做十六进制吗?
一般来说,atoi只转换十进制,不包括十六进制。
如果要支持十六进制,可以自己加一个前导字符,常用X。
也就是说,如果字符串的第一个字符是X,就意味着将字符串改为十六进制形式。
判断类似于你现有的象征性判断。在处理数据时,不应使用isdigit判断,而应添加a-f判断。
计算时,10*n改为16 * n。
简单的例子
int atoi(char s[])
{
int i,n,sign
for(I = 0;is space(s[I]);i ) /*跳过空白*/
;
if(s[i] == 'x')/*hex*/
{
我;
for(n = 0;is digit(s[I])| |(s[I]= ' a ' s[I]= ' f ');我)
{
if(isdigit(s[i]))
n = 16 * n(s[I]-' 0 ');
其他
n = 16 * n(s[I]-' a ')10;
}
返回n;
}
sign = (s[i] == '-')?-1 : 1;
if (s[i] == ' ' || s[i] == '-') /*跳过符号*/
我;
for(n = 0;is digit(s[I]);我)
n = 10 * n(s[I]-' 0 ');
回车符* n;
}
c语言的Atoi函数问题 你把main里的int *q改成char *q q。
#includestdlib.h
# includestdio.h
/*嗯,用atoi函数总是拿不到数据,很郁闷。。。*/
/* Input:任何字符(除了*),后面跟一个空格,后面跟一系列输入。
数字,中间有一个空格,回车结束输入,
如果输入*号,则停止输入。*/
/* Output:要处理的字符串,用atoi函数处理后得到的数据。*/
typedef结构测试
{ char str[80];
int data[80];
}测试;
int main()
{
int i=0,j=0,k=0,m;
char * q;
char ch
测试构件[80];
while用于判断输入是否完成*/
while((ch=getchar())!='*')
{
获取(成员[i]。str);
我;j;
}
/*这个for是用来通过atoi获取数据的,问题就在这里。。。*/
for(I = 0;I = j;我)
{ k = 0;
q =成员[i]。str 1;
成员[i]。data[k]= atoi(q);
这里:while(*q!=' '*q!='\0')
q;
q;
k;
if(*(q-1)!='\0')
{
成员[i]。data[k]= atoi(q);
转到此处;
}
}
/*这是输出部分*/
for(k = 0;kj;k)
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf("第%d个字符串是:",k 1);
puts(成员[k].str);
printf("第%d个字符串开始的三个数字是:",k 1);
for(m = 0;m3;m)
printf("= ",member[k]。数据[m]);
printf(" \ n ");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf(" \ n ");
}
printf("按任意键返回...\ n ");
}
最后更新于 2023-10-08 23:24:10 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章