Чтение одного символа в C
Я пытаюсь прочитать символ из консоли (внутри цикла while). Но это читается не раз.
Входные данные:
a
Выход:
char : a char : char : '
Код:
while(..)
{
char in;
scanf("%c",&in);
}
Как я могу читать только "а"?
4 ответа
Решение
scanf("%c",&in);
оставляет новую строку, которая используется в следующей итерации.
Измените это на:
scanf(" %c",&in); // Notice the whitespace in the format string
который говорит scanf игнорировать пробелы.
ИЛИ ЖЕ
scanf(" %c",&in);
getchar(); // To consume the newline
Чтобы прочитать только один символ, используйте вместо него getchar:
int c = getchar();
if (c != EOF)
printf("%c\n", c);
В scanf("%c",&in);
Вы могли бы добавить после %c
символ новой строки \n
чтобы поглотить лишних персонажей
scanf("%c\n",&in);
Ты всегда можешь использовать char a = fgetc (stdin);
. Нетрадиционно, но работает так же, какgetchar()
.
Вы можете сделать это так.
char *ar;
int i=0;
char c;
while((c=getchar()!=EOF)
ar[i++]=c;
ar[i]='\0';
таким образом, вы создаете строку, но на самом деле это массив символов.