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 ");

}

相关文章

发表新评论