Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2011, 19:41   #1
ддимочка
Пользователь
 
Регистрация: 30.08.2011
Сообщений: 26
По умолчанию проблема с компилятором Watcom c-c++

Пишу очень простенькую программку:
#include <stdio.h>

void main()
{
int i,j;
char com;
while(1)
{
printf("vvedite comadu\n");
scanf("%c", &com);
printf("vvedite argument\n");
scanf("%d", &i);
switch (com)
{
case 'k':j=i*i; break;
case 'l': j=i*i*i; break;
default: break;
}
printf("%d\n", j);
}

}
При первом проходе цикла все нормально
Уже при втором отмеченная строка просто пропускается
Ничего не могу с этим сделать
ддимочка вне форума Ответить с цитированием
Старый 30.08.2011, 20:01   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Попробуйте вместо scanf("%d", &i); написать scanf("%d\n", &i);
Если не поможет, то после scanf("%d", &i); вставьте getchar();
Если и это не поможет (хотя должно), то после scanf("%d", &i); напишите fflush(stdin);
Код:
scanf("%d", &i);
getchar();
Код:
scanf("%d", &i);
fflush(stdin):
netrino вне форума Ответить с цитированием
Старый 31.08.2011, 09:44   #3
ддимочка
Пользователь
 
Регистрация: 30.08.2011
Сообщений: 26
По умолчанию

netrino, спасибо огромное! все заработало. вот только я надеюсь вы не подумали, что эта программа мне понадобилась для конкретного применения. Это так сказать проба пера. Не могли бы вы объяснить мне суть проблемы. на будущее. уточню - заработал выриант с

scanf("%d", &i);
fflush(stdin);
ддимочка вне форума Ответить с цитированием
Старый 31.08.2011, 18:18   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от ддимочка Посмотреть сообщение
netrino, спасибо огромное! все заработало. вот только я надеюсь вы не подумали, что эта программа мне понадобилась для конкретного применения. Это так сказать проба пера. Не могли бы вы объяснить мне суть проблемы. на будущее. уточню - заработал выриант с

scanf("%d", &i);
fflush(stdin);
Не подумал)
Проблема была в том, что при чтении целого scanf'ом, в буфере оставался символ перевода строки (тот, что по нажатию Enter вводится), который и считывался последующим вызовом scanf("%c", &com), создавая видимость "пропуска ввода". fflush(stdin) очищает буфер потока ввода.
netrino вне форума Ответить с цитированием
Старый 02.09.2011, 11:44   #5
ддимочка
Пользователь
 
Регистрация: 30.08.2011
Сообщений: 26
По умолчанию

Даааа, Си капризный язык. Спасибо еще раз! Сам бы никогда не догадался. И ни в какой литературе не найдешь
ддимочка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Open Watcom 1.9 исправление редактора текста Виталий Серов Софт 1 24.07.2014 17:45
проблема с компилятором Monomah Помощь студентам 3 11.04.2011 16:38
Проблема с компилятором и обучалкой Kree Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.11.2009 22:09
Помогите с Watcom Vega89 Помощь студентам 2 06.08.2009 09:19
Проблема с компилятором, а может и не с ним :( D_bl_M Общие вопросы C/C++ 15 08.11.2007 11:43