C:没有打印出我想要的内容

标签 c printf

我有一个简单的代码来仅打印字符串中的数字,但它没有打印我想要的内容,我完全不知道为什么。它应该打印 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/

相关文章:

c++ - 如何从 snprintf() 获得 -1

c - Malloc 返回错误

c - 为什么C标准库没有提供知道分配内存大小的功能?

c - 通过简单的函数调用将 32 位表示为 C 中的十六进制数

matlab - disp(fprintf()) 打印 fprintf 和字符数。为什么?

c++ - “_snprintf”未在此范围内声明

C 自由() : invalid pointer allocated in other function

由于不相关的空 printf 语句,C 程序输出完全改变

c - 读取每个文件并循环执行 func

c - 调用 sprintf 时静态变量被清除