Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
ArchiBishop
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 2
#1

Программа зацикливается, так как не считывает заново значение xmin - C (СИ)

16.09.2012, 18:15. Просмотров 518. Ответов 9
Метки нет (Все метки)

C
1
2
3
repeatxmin:
    printf("Enter X minimum value: ");
    if (scanf("%f",&xmin)!=1) {printf("Wrong minimum X value\n"); goto repeatxmin;};
Есть такой кусок куда в программе. При дебагинге ввожу символы, но происходит беда: програма уходит в вечный цикл, так как не считывает заново значение xmin, а сразу обрабатывает его как условие.

Подскажите или задайте вектор в каком направлении искать ошибку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2012, 18:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа зацикливается, так как не считывает заново значение xmin (C (СИ)):

Программа зацикливается - C (СИ)
ВОПРОС: почему когда я ввожу "надпись", идет бесконечный цикл? объясните пишу прогу на си, когда ввожу надпись любые карякули, программа...

Программа зацикливается - C (СИ)
Суть задания по коду видно, а проблема собственно вот в чем: ввел название, цену, срок годности, а дальше выводится "введите фамилию...

Программа зацикливается на строчке while - C (СИ)
программа зацикливается на строчкеwhile ((c!= ' ') || (c!='\n') || (c!='\0')) { fprintf(fpout,"%c",c); c=fgetc(fp); ...

Программа зацикливается при разложении в ряд - C (СИ)
Вылетает с ошибкой. В чем причина? #include <stdio.h> #include <conio.h> #include <math.h> int main() { float x, s,...

Программа зацикливается при вводе матрицы - C (СИ)
Здравствуйте. Помогите, в программе какая то ошибка, не могу найти. Почему-то зацикливается при вводе матрицы. #include <stdio.h> ...

Программа не доходит до конца файла и зацикливается - C (СИ)
она не видит конца файла и зацикливается на 21 или на 30 строчке... Программа должна удалить все слова из файла, начинающиеся на согласную....

9
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.09.2012, 19:33 #2
А почему бы не сделать отдельно?
C
1
2
3
scanf("%f",&xmin);
if (xmin!=1) 
 ...
0
rangerx
1940 / 1549 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
16.09.2012, 20:03 #3
C
1
2
3
4
5
6
7
8
9
int ignoreln(FILE* fp) {
 
    int ch = getc(fp);
    
    while(ch != EOF && ch != '\n')
        ch = getc(stdin);
 
    return ch;
}
C
1
2
3
4
5
6
7
8
9
REPEATXMIN_LABEL:   
    printf("Enter X minimum value: ");
        
    if (scanf("%f", &xmin) != 1) {
            
        printf("Wrong minimum X value\n");
        ignoreln(stdin);
        goto REPEATXMIN_LABEL;
    }
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.09.2012, 20:08 #4
Цитата Сообщение от BumerangSP Посмотреть сообщение
А почему бы не сделать отдельно?
BumerangSP, man scanf
1
ArchiBishop
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 2
16.09.2012, 20:19 #5
разобрался)
оказывается scanf не очищает буфер, после своего вызова
C
1
2
3
4
repeata:
    fflush (stdin);
    printf("Enter parameter A: ");
    if (scanf("%f",&a)!=1) {printf("Wrong parameter A\n"); goto repeata;};
0
rangerx
16.09.2012, 21:26
  #6

Не по теме:

Цитата Сообщение от ArchiBishop Посмотреть сообщение
fflush (stdin);
На всякий случай: кроме вашего компилятора это больше нигде работать не будет. По стандарту функция fflush предназначена исключительно для потоков вывода.

0
alex_x_x
бжни
2452 / 1657 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
16.09.2012, 21:30 #7
rangerx, громко сказано
во вряхе вроде не работает, а так почти везде
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
17.09.2012, 08:31 #8
Цитата Сообщение от alex_x_x Посмотреть сообщение
во вряхе вроде не работает, а так почти везде
по стандарту - неопределённое поведение
0
alex_x_x
бжни
2452 / 1657 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.09.2012, 11:22 #9
Цитата Сообщение от accept Посмотреть сообщение
по стандарту - неопределённое поведение
я знаю
я на этом форуме по этому поводу ссылку на стандарт кидал

я про то, что это крайне громко сказано, что будет работать на одном компиляторе/версии libc
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
18.09.2012, 01:39 #10
там даже нельзя сделать условную компиляцию, так как всё равно придётся учитывать случай, когда компилятор неизвестный, а символы в потоке всё так же нужно проматывать
0
18.09.2012, 01:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2012, 01:39
Привет! Вот еще темы с ответами:

Зацикливается программа при проверке корректность ввода - C (СИ)
Добавил в программу проверку на корректный ввод: flag=scanf("%d",&l.num); while (1>flag) { puts("Vvodit mojno tolko...

Когда вводишь не числовое значение — программа зацикливается на нуле - C++
Есть у меня считалка налогов. Проблема в том, что когда вводишь не числовое значение - программа зацикливается на нуле, какое условие мне...

Как сделать так чтобы не надо было создавать заново компоненты на второй форме - C#
Имеется 2 формы. На второй вот такое. -OleDbConnection -OleDbDataAdapter -DataSet -DataGridView На второй форме у меня...

Как сделать так, чтобы при нажтии кнопки НАЗАД стр. перегружалась заново? - C# ASP.NET
Подскажите, пожалуйста, как сделать так, чтобы при нажтии кнопки НАЗАД стр. перегружалась заново (на ней форма и надо обнулять ее поля и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru