Getchar () продолжает возвращаться 1 - PullRequest
2 голосов
/ 31 марта 2020

Я новичок в StackOverflow. Я надеюсь, что смогу многому научиться здесь. Итак, я новичок в C. Я просто пробую несколько вещей, например, использую базовые функции 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, несмотря ни на что. enter image description here

Кроме того, у меня есть еще один вопрос. Я знаю, что char в C - это, по сути, 8-битное целое число, и вы можете использовать char и int (с некоторыми проблемами, поскольку целые числа не являются 8-битными переменными) взаимозаменяемо. Итак: почему некоторые люди объявляют переменную как int вместо char, если нужно хранить char с помощью getchar? Извините за такие базовые c вопросы.

Примечание: другие переменные объявлены, так как это часть большого кода. все остальные части кода были помещены в код для проверки этого (/ * * /). Извините за мой Engli sh, надеюсь, то, что я написал, понятно.

1 Ответ

6 голосов
/ 31 марта 2020

Это:

c= getchar() != '\n'

эквивалентно

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

, поэтому совсем не то, что вы имели в виду. Таким образом, 1 является результатом сравнения !=. Вам нужно

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