refactor
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user