C:整数打印不正确

标签 c

(大家好。我尝试寻找我遇到的问题,但到目前为止似乎找不到解决方案。我对编程完全陌生,目前正在学习 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);
    }

}

最佳答案

有两件事:

  1. scanf() 中给出的输入格式应与输入完全匹配,才能成功扫描 。 [您的输入中需要包含 ,]
  2. 始终检查 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/

相关文章:

c++ - Node.js 6 插件将 Buffer.from() 转换为 const UInt8*

c++ - 非 NULL 保留指针值

c - 在 C 中减少十六进制格式以外的二进制数

c - 在 C 中减去任意大整数

c++ - C/C++ 中空终止字符串的长度

c - 将数据输出到文本文件的问题

c - 如何声明一个字符串,使其长度由用户在 c 中给出?

c - 使用表单数据时看不到 C 中上传的文件

c - 允许 C 编译器中的函数重载(抑制 C 中的 "conflicting types for "错误)

统计txt文件中相同单词的数量