我正在编写编程问题的解决方案。问题如下:
你的程序是使用蛮力方法来找到 回答生命,宇宙和一切。更确切地说... 从输入到输出重写小数字。停止处理输入 读完数字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;
}
}
}
}
答案 0 :(得分:3)
在您的代码中
printf(number);
无效。您使用printf()
错过了所需的格式说明符。你想写
printf("%d", number);
此外,printf()
是variadic function,它可以接受一个或多个参数,只要满足该条件,编译就不会失败。但是,由于参数类型不匹配,此实例将导致undefined behaviour。