(大家好。我尝试寻找我遇到的问题,但到目前为止似乎找不到解决方案。我对编程完全陌生,目前正在学习 C,但我是一个十足的菜鸟,所以我如果我犯了一个愚蠢的错误,请提前道歉。)
问题是:我尝试扫描 4 个整数并使用 while 循环打印它们的值。问题是,这些数字被打印为疯狂的长数字,而不是输入的整数。我尝试扫描和打印一个整数,它打印得很好,但是一旦我使用多个整数,它就开始乱七八糟。
这是我的代码:
#include <stdio.h>
int main()
{
int i, n1,n2,n3,n4;
printf("Enter 4 numbers.");
for(i=0;i<4;i++)
{
printf("\n\nEnter number %d: ", i+1);
scanf("%d,%d,%d,%d", &n1,&n2,&n3,&n4);
printf("%d,%d,%d,%d", n1,n2,n3,n4);
}
}
最佳答案
有两件事:
scanf()
中给出的输入格式应与输入值完全匹配,才能成功扫描 。 [您的输入中需要包含,
]- 始终检查
scanf()
是否成功,以确保正确扫描值。scanf()
返回成功匹配和扫描的项目数。
所以,你应该将代码更改为类似的内容,
if ( scanf("%d,%d,%d,%d", &n1,&n2,&n3,&n4) == 4)
{
// use n1, n2, n3, n4
}
else
//don't use them, return some error.
注意:始终初始化局部变量。很多时候,它会将您从先读后写场景的未定义行为中拯救出来。
此外,[也许?] for
循环不是必需的,因为您一次扫描所有四个数字。
关于C:整数打印不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337762/