Не работает фунция scanf("%c", &x)

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Andrey K.
Сообщения: 2
Зарегистрирован: 16 мар 2009, 10:25

16 мар 2009, 10:39

Здравствуйте, уважаемые!
Столкнулся с проблемой, что не работает функция scanf("%c", &x). Определяется некорректным выводом в окне и аварийным завершением работы программы. До этого момента ни разу не работал с вводом одиночных символов... Любая другая конструкция указанной фунцкции с другими аргументами работает нормально, проблемы только с вводом одиночных символов. Подскажите, в чем дело!!! Перерыл книги Кернигана и Ричи, а также кучу других учебников, везде пишется, что именно scanf("%c", &x) является рабочей функцией для ввода символов. Не говорю о том, что переменная х определена как char, считаю, что это как само собой разумеящееся...
Аватара пользователя
Airhand
Сообщения: 234
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

16 мар 2009, 13:22

Покажи кусок кода, где ты её юзаеш. У всех работает, значит ошибка в твоём коде.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
Аватара пользователя
Decoder
Сообщения: 303
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

16 мар 2009, 23:50

Наверно лучше переместить эту тему в раздел "Решите мне задачку": уж слишком банальный вопрос...
Andrey K.
Сообщения: 2
Зарегистрирован: 16 мар 2009, 10:25

17 мар 2009, 02:26

Вот, накидал пример.
int _tmain(int argc, _TCHAR* argv[])
{

1 int aa=0;
2 char x;
3 printf("a=");
4 scanf("%d",&aa);
5 printf("Sim=");
6 scanf("%c",&x);//не получается ввести символ!!!
7 printf("Sim=%c",x);//???????????????????????????
8 return 0;
}
Если в этом примере отключить двойными слешами все лишние строки, например 1,3,4, всё прекрасно считывается, а вместе с остальными строками не работает! Компилировал в VC2008 RUS и Dev-C++ - результат один и тот же...

Я не прошу решить мне задачку! Прошу указать то, что я делаю не так!
Аватара пользователя
Decoder
Сообщения: 303
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

17 мар 2009, 02:45

1. Переменная x должна иметь тип int, а не char, даже если тебе нужен только один символ.
2. Для ввода одиночных символов есть специальные функции, типа getchar() или fgetc(stdin).
Ответить