【问题标题】:C Prints One Char More Without ValueC 多打印一个字符而没有值
【发布时间】:2011-05-17 12:18:33
【问题描述】:

我正在尝试打印 3 个字符型字符的 ASCII 值。当我输入第一个字符时,它不会打印字符的值。在第一个字符之后,它开始给出值。

#include <stdio.h>
int main()  {
    char ch;
    int t;
    while(t < 3){
        scanf("%c\n", &ch);
        printf("%c - %d\n", ch,ch);
        t++;
    }
}

http://i54.tinypic.com/2mdqb7d.png

【问题讨论】:

  • 初始化t可能是个好主意...
  • 使用scanf(" %c",&amp;ch); 会跳过所有空格。
  • 将 t 更改为 t=0 但仍然相同。我使用 gcc 编译代码。
  • 如果我是你,我会在调用 printf 后尝试刷新标准输出。

标签: c input char printf scanf


【解决方案1】:

我看过几次,不知道根本原因,但有效的解决方案是:

scanf("\n%c", &ch);

这可能与缓冲的行尾字符有关。

【讨论】:

    【解决方案2】:

    变量 t 不会被编译器自动初始化为 0。因此,您需要将 t 初始化为 0。如果 printf 没有立即打印,则表示数据已缓冲。如果您想立即查看,可以考虑在 printf 之后立即刷新标准输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-08
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2020-10-08
      相关资源
      最近更新 更多