函数原型:int atoi(const char * str);
功能:将str里整数字符,翻成整数
函数说明:1:忽略开始的空白字符串,知道非空白的字符开始转换
2:处理正负+ - 字符
3:如果字符串为空,或者字符串里首字符不为数字或者正负号,不做转换
程序实现:
- #include <stdlib.h>
- #include <assert.h>
- #include <stdio.h>
- int main(int argc,char *agrv[])
- {
- char buf[100]="-33232";
- printf("the buf is %d\n",atoi(buf));
- return 0;
- }
- int atoi(const char *str)
- {
- assert(str!=NULL);
- int sign=0;
- int num=0;
- while(*str==' '||*str=='\n'&&*str=='\t')
- str++;
- if(*str=='-')
- {
- sign=-1;
- str++;
- }
- else if(*str=='+')
- {
- sign=1;
- str++;
-
- }
- while(*str<='9'&&*str>='0')
- {
-
- num=num*10+*str-'0';
- str++;
-
- }
-
- return num*sign;
-
-
- }
以上例子是将十进制字符串转化为相应的整形量,可以再添加说明htoi函数的实现,将十六进制字符串转化为相应的整形量。程序如下:
- #include <stdio.h>
- int main()
- int htoi(char s[]);
- {
- int i;
- char buf[100]="OX11";
- i=htoi(s);
- printf(“十六进制%s=%d ”,s,i);
-
- return 0;
- }
- int htoi(char s[])
- {
- int i = 0;
- int n = 0;
- int digit = 0;
- if(s[i]=='0')
- {
- ++i;
- if(s[i] == 'X'&&s == 'x')
- ++i;
- }
- else
- {
- printf("it is not true\n");
- exit(-1);
- }
- for(i;s[i]!='0';i++)
- {
-
- if(s[i]<'9'&&s[i]>'0')
- digit = s[i]-'0';
- else if(s[i]<'z'&&s[i]>'a')
- digit=s[i]-'a'+10;
- else if(s[i]>'A'&&s[i]<'z')
- digit=s[i]-'A'+10;
- else
- break;
-
- n=n*16+digit;
- }
- return n;
-
- }
阅读(11434) | 评论(0) | 转发(0) |