【问题标题】:Why my code show a false value of char variable为什么我的代码显示 char 变量的错误值
【发布时间】:2020-07-27 10:42:31
【问题描述】:

我用 C 语言编写代码,但是当我这样写时

int main() 
{ 
   char one,two,three;
   int num=0;
   scanf("%d",&num);
   scanf("%c %c %c",&one,&two,&three);
   printf("%c %c %c",one,two,three);
}

当我输入字符 a b c 时显示我

 a b

并且不显示c

当我输入num 时会发生这种情况。如果我将num 的变量设置为3 它会显示我

a b c

喜欢我的意见

如何解决?

【问题讨论】:

  • 在处理键盘输入/输出时,最好先使用 fgets(),然后使用 sscanf()
  • %d 在非数字上停止并将其留在缓冲区中。使用 fgets 读取整行,使用 sscanf 尝试读取 num,但检查返回值。

标签: c validation input


【解决方案1】:

当您的第一个“scanf”处理过程中,除了您输入的任何数字之外,您还需要输入一个换行符“/n”。您的第二个“scanf”正在读取此内容,因此 &one 是您的新行。

要解决这个问题,只需更改此行:

scanf("%c %c %c",&one,&two,&three);

到这里:

scanf(" %c %c %c",&one,&two,&three);

第二行中多余的空格将阻止第二个“scanf”语句使用换行符。

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2019-03-07
    • 1970-01-01
    • 2014-10-22
    相关资源
    最近更新 更多