简洁的atoi
1 #include<ctype.h> //isspace and isdigit 2 3 /* convert string to integer */ 4 int atoi(char s[]) 5 { 6 int i,n,sign; 7 for(i=0;isspace(s[i]);i++)//skip white space 8 ; 9 sign=(s[i]=='-')?-1:1; 10 if(s[i]=='+'||s[i]=='-')//skip sign 11 i++; 12 for(n=0;isdigit(s[i]);i++) 13 { 14 n=n*10+(s[i]-'0'); 15 } 16 return sign*n; 17 18 }
从中可以看出每一个for循环的条件测试并不需要判断s[i]!='\0'