38 lines
816 B
C
38 lines
816 B
C
|
|||
|
|
#include "stdio.h"
|
||
|
|
#include "string.h"
|
||
|
|
|
||
|
|
int string_to_integer(char *s,int length){
|
||
|
|
|
||
|
|
if (length>1)
|
||
|
|
{
|
||
|
|
return s[0]=='-'?string_to_integer(s,length-1)*10-(s[length-1]-'0'):string_to_integer(s,length-1)*10+s[length-1]-'0';
|
||
|
|
}else{
|
||
|
|
return s[0]=='-'?-1/10:s[0]-'0';
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 问题:
|
||
|
|
1. s是空字符串
|
||
|
|
2. s传参为非数字字符
|
||
|
|
3. 超出整数所能表示范围
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
int main(){
|
||
|
|
|
||
|
|
char *s = "4323";
|
||
|
|
|
||
|
|
printf("integer == %d\n",string_to_integer(s,strlen(s)) );
|
||
|
|
printf("integer == %d\n",string_to_integer("12342",5));
|
||
|
|
printf("integer == %d\n",string_to_integer("-11",3) );
|
||
|
|
printf("integer == %d\n",string_to_integer("-5",2) );
|
||
|
|
printf("integer == %d\n", string_to_integer("3",1));
|
||
|
|
|
||
|
|
printf("integer == %d\n", string_to_integer("abcd",4));
|
||
|
|
printf("integer == %d\n", string_to_integer("a",1));
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|