Чтение одного символа в 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';

таким образом, вы создаете строку, но на самом деле это массив символов.

Другие вопросы по тегам