我有一个简单的代码来仅打印字符串中的数字,但它没有打印我想要的内容,我完全不知道为什么。它应该打印 1 和 10,但它打印 1、10 和 100。现在为什么是 100? :s
char string[50] = "1 10 +";
int value = 0;
for (int i = 0; i != strlen(string); i++)
{
if (isdigit(string[i])){
value = value*10 + atoi(&string[i]);
printf(" %d\n", value);
}
else
{
if (string[i] == ' ')
{
value = 0;
}
}
}
return(0);
}
最佳答案
假设函数 isdigit() 正确执行,则 if block 内的 string[i] 将位于 '0'..'9' 之间的范围内。
更换线路:
value = value*10 + atoi(&string[i]);
与
value = value*10 + string[i] - '0'; // the difference between string[i] and '0'
// are the integer value you're looking for.
// i.e. '9' - '0' equals to 9.
此外,您可能不想在循环内打印该值。相反,在最后打印最终值可能会更好。
关于C:没有打印出我想要的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27433622/