C语言 为什么下面的代码给出运行时错误SIGSEGV



我正在写一个编程问题的解决方案。问题如下:

你的程序是使用暴力的方法来找到生命、宇宙和万物的答案。更准确的说……从输入到输出重写小数字。停止处理输入读入数字42后。输入的所有数字都是整数一个或两个数字

我把我的代码粘贴在下面。当我提交这个解决方案时,我得到了分割错误。有人能指出这段代码有什么问题吗?如有任何帮助,我将不胜感激。

#include <stdio.h>
int main(void) {
    int number = 0;
    while (1)
    {
        int c = getchar();
        if (c != EOF)
        {
            number = number * 10 + c;
        }
        else
        {
            //const char value = number;
            if (number != 42)
            {
                printf(number);
                printf("n");
                number = 0;
            }
            else
            {
                return 0;
            }
        }
    }
}

在你的代码中

printf(number);

是无效的。您缺少printf()所需的格式说明符。你想写

printf("%d", number);

同样,printf()是一个可变函数,它可以接受一个或多个参数,只要满足条件,编译就不会失败。但是,由于参数类型不匹配,此实例将导致未定义行为。

最新更新