【问题标题】:Getchar() keeps returning 1Getchar() 不断返回 1
【发布时间】:2020-03-31 10:48:34
【问题描述】:

我是 StackOverflow 的新手。我希望能够在这里学到很多东西。 所以,我是 C 的初学者。我只是在尝试一些事情,比如使用非常基本的函数。 这是我的代码:

#include <stdio.h>
#include <stdlib.h>


int main()
{   int c;
    int i,wl[20];
    int count = 0;
   i = 0;

printf("Insert line: ");    


while(c= getchar() != '\n'&& c != EOF)
    printf("integer value of the variable is %d\n", c);
return 0;
}

这应该是一个简单的程序:您插入一个输入并在 int 中为您提供当前值。 问题是:无论如何,getchar 一直返回 1。

另外,我还有一个问题。我知道 C 中的 char 基本上是一个 8 位整数,事实上您可以互换使用 char 和 int (有一些问题,因为整数不是 8 位变量)。那么:为什么有些人在需要用 getchar 存储 char 时将变量声明为 int 而不是 char?很抱歉这些基本问题。

注意:其他变量被声明,因为这是更大代码的一部分。代码的所有其他部分都作为代码进行测试 (/* */)。 对不起我的英语,我希望我写的很清楚。

【问题讨论】:

  • 欢迎来到 SO。请不要发布纯文本的图像。相反,只需将文本复制并粘贴到您的问题中即可。这适用于代码以及程序的输出。
  • 请不要将多个问题放在一个问题中。而是创建一个新的。
  • getchar 返回 int 值,而不是 char。这应该是足够的理由。还请考虑一下:EOF 是否适合 char
  • 好的,下次我将创建新线程并发布文本而不是图像。我在 EOF 示例中看到了您的观点。谢谢。

标签: c getchar


【解决方案1】:

这个:

c= getchar() != '\n'

等价于

c = (getchar() != '\n')

所以根本不是你的意思。所以1!= 比较的结果。你需要

(c = getchar()) != '\n'

【讨论】:

  • 哇哦。就这么容易。非常感谢,我真的很感激。我已经尝试解决这个问题至少一个小时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
相关资源
最近更新 更多