这个函数是测试数组的吗?
数组的值在哪获得?
如果我的数组是-2 -5 dfgh -4 5 6它输出什么?
如果是-2 -5 它输出什么?
这个函数给我一种坑爹到极致的感觉?是不是印错了
atoi() 函数用来将字符串转换成整数(int),其原型为:
int atoi (const char * str);
【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
【返回值】返回转换后的整型数;如果 str 不能转换成 int 或者 str 为空字符串,那么将返回 0。
示例(c#下测试的,改成c的,应该没问题):
1 //如果是正负符号或者数字返回 false 2 int isspace(char ch) { return !((ch == '+' || ch == '-') || (ch >= '0' && ch <= '9')); } 3 //如果是数字返回 true 4 int isdigit(char ch) { return (ch >= '0' && ch <= '9'); } 5 6 int atoi(char s[]) 7 { 8 int i, n, sign; 9 //找到正负符号或者数字的起点 10 for (i = 0; isspace(s[i]); i++) {; } 11 //正负符号判断 12 sign = (s[i] == '-') ? -1 : 1; 13 //有正负符号移动下标 14 if (s[i] == '+' || s[i] == '-') { i++; } 15 //将连续的数字字符转换 16 for (n = 0; isdigit(s[i]); i++) 17 { 18 n = 10 * n + (s[i] - '0'); 19 } 20 21 return sign * n; 22 }