当前位置:  开发笔记 > 编程语言 > 正文

在C中打印getchar()返回值

如何解决《在C中打印getchar()返回值》经验,为你挑选了1个好方法。

我有一个非常简单的程序如下:

int main()
{
  char c;
  while (c = getchar() != 'q')
    printf("%c", c);
}

运行此程序时遇到两个问题:

    当我运行它时,它不打印c它已经得到的getchar().以下是输出示例:每行都是我的输入,但在获取后不会打印出来:

    w
    r 
    3
    

    我已经定义q退出程序.但是当我运行它时,如果我输入多个字符并不重要.如果我输入一个包含其中q某个位置的字符串,它将退出该程序.例如,以下输入将结束它:

    lqw
    

进入后如何getchar()回来?qlqw



1> StoryTeller ..:

问题是运营商优先级.让我们添加括号,以便您了解编译器如何执行它:

c = (getchar()!='q')

!=优先级高于赋值优先级.因此c总是分配1或0.要解决此问题,请执行以下操作:

int c;
while((c = getchar()) != 'q' && c != EOF)

为什么int?因为这就是getchar回报.EOF不是一个char,而是一个int价值.它必须是,因为它应该意味着"没有有效的字符".并且添加了对它的检查,因为如果将输入重定向到程序中,如果'q'从不在输入流中,则会陷入无限循环.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有