我在这里迷路了。目的是什么?把一个字符串变成int?或者将字符转换成ASCII?如果对char s[]使用任何数字,则返回该数字。如果我用任何字母,我都会得到0。输出是否正确?如何测试返回类型以知道转换已发生?
//atoi: convert s to integer
#include <stdio.h>
#include <string.h>
int atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
}
int main()
{
char s[] = "7";
printf("atoi = %d\n", atoi(s)); //atoi = 7...is this correct?
return 0;
}
在K&Rs的第二个版本中,我得到一个错误,if语句的左操作数必须是I-value。我把这本书逐字逐句地抄了下来。我做错了什么?
#include <ctype.h>
#include <stdio.h>
//atoi: convert s to integer; version 2
int atoi(char s[])
{
int i, n, sign;
for (i = 0; isspace(s[i]); i++) //skip white space
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] = '-') //skip sign
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}
int main()
{
char s[] = "9";
printf("atoi = %d\m", atoi(s));
return 0;
}
最佳答案
显然,你没有“逐字逐句地从书上抄下来”。
您在if
语句中使用的是赋值,而不是比较。
更改此:
s[i] = '-'
对此:
s[i] == '-'
关于c - 沮丧中的阿托伊,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27665307/