【问题标题】:Found error while printing the ascii value of a character [duplicate]打印字符的ascii值时发现错误[重复]
【发布时间】:2021-07-03 06:05:58
【问题描述】:

第一次成功迭代后,第二个打印语句会自动打印。它的输入是空格。 为什么会这样?

    #include<stdio.h>
    int main() {
        char c;
        while (1)
        {
            printf("\nEnter any character to get its ASCII value - ");
            scanf("%c",&c);
            printf("Ascii value of %c : %d",c,c);
        }
        
    }

样本输出:

【问题讨论】:

  • 10 是 Enter 产生的换行符

标签: c while-loop runtime-error ascii


【解决方案1】:

这是因为换行符仍然保留在输入缓冲区中,将scanf("%c",&amp;c);更改为scanf(" %c",&amp;c);,它会按预期工作。

【讨论】:

  • 是的,它奏效了。但是请您向我解释一下换行符是如何保留在输入缓冲区中的。因为,我什至尝试在下一次迭代中将变量(char c)重新声明为空。但我仍然面临同样的问题。
  • @SushilDikondwar 重新声明不起作用,换行符保留在输入缓冲区中,而不是变量 c 中,因此在 while 循环的下一次迭代中,c 从输入中读取包含换行符 (\n) 的缓冲区。
猜你喜欢
  • 2021-04-02
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
相关资源
最近更新 更多