为什么以下代码给出了运行时错误SIGSEGV

时间:2015-09-16 19:47:11

标签: c segmentation-fault printf

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

  

你的程序是使用蛮力方法来找到   回答生命,宇宙和一切。更确切地说...   从输入到输出重写小数字。停止处理输入   读完数字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;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

在您的代码中

printf(number);

无效。您使用printf()错过了所需的格式说明符。你想写

printf("%d", number);

此外,printf()variadic function,它可以接受一个或多个参数,只要满足该条件,编译就不会失败。但是,由于参数类型不匹配,此实例将导致undefined behaviour