проблема в сканировании символа в C - PullRequest
3 голосов
/ 24 февраля 2011
#include<stdio.h>
#include<conio.h>
void main()
{
  int a,b,c;
  char ch;
  printf("Enter value of a and b");
  scanf("%d %d",&a,&b);
  printf("Enter choice of operation");
  scanf("%c",&ch);// **Here this statment is not able to receive my input***
  switch(ch)
  {
     case '+':
            c=a+b;
            break;
     case '-':
            c=a-b;
            break;

     default:
             printf("invalid");
             break;
  }
getch();
}

Ошибка:

scanf("%c",&ch); // Здесь эта запись не может получить мой ввод Невозможно отсканировать ввод данных пользователем ??????

спасибо ..

Ответы [ 8 ]

7 голосов
/ 24 февраля 2011

В отличие от большинства преобразований, %c не не пропускает пробелы перед преобразованием символа.После того, как пользователь вводит два числа, в буфере ввода остается возврат каретки / новая строка, ожидающая чтения - вот что читает %c.

4 голосов
/ 24 февраля 2011

Он получает символ новой строки из вашего предыдущего ввода данных.Попробуйте использовать fgets() и sscanf() вместо непосредственного использования scanf().

3 голосов
/ 03 июня 2014

Здесь в этом утверждении напишите %s вместо %c. Это обязательно сработает.

scanf("%s",&ch);
3 голосов
/ 24 февраля 2011

Просто попробуйте scanf(" %c", &ch); Это потому, что ваш scanf обрабатывает пробел после второго числа как символ для вставки в ch.

1 голос
/ 01 июля 2018

в этой задаче вы можете написать так scanf ("% c", & ch);

пробел будет охватывать ваш символ "Ввод", затем он сканирует нужный вам ввод ... https://ide.geeksforgeeks.org/ANGPHrqeAq

1 голос
/ 23 ноября 2016

Используйте getchar() или sscanf(), в зависимости от того, что вам больше нравится.

Как

char ch;

ch = getchar();

Это просто. также, если вы хотите использовать scanf("%c",&ch); тогда, просто удалите \n из вашего предыдущего оператора printf().

1 голос
/ 24 февраля 2011

Для ввода одного символа используйте getchar ().

1 голос
/ 24 февраля 2011

Если вы читаете только один символ, вы можете просто использовать getchar() -

 c = getchar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...