1 #include <stdio.h> 2 /* 3 编码实现字符串转整型的函数(实现函数 atoi 的功能)。如将字符串“123”转化为 123, 4 “-0123”转化为-123 5 */ 6 int myatoi(const char *p) 7 { 8 int val = 0; 9 int sign; 10 while(*p == ' '||*p == ' ')p++; 11 if(*p == '-'||*p == '+') 12 { 13 sign = (*p == '-'?-1:1);//必须用括号,= 和 == 优先级不一样 14 p++; 15 } 16 17 while(*p-'0'>=0&&*p-'9'<=0) 18 { 19 if(*p == '0')//考虑符号 后第一个字符为'0'的情况-0123 没有这样的数字吧,直接归0 20 return 0; 21 else 22 val = val*10+(*p-'0'); 23 p++; 24 } 25 return sign*val; 26 27 } 28 int main(void) 29 { 30 char *p = " -123a44sdfdf"; 31 int val = myatoi(p); 32 printf("val = %d ",val); 33 34 return 0; 35 }