Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
6 / 6 / 3
Регистрация: 12.03.2014
Сообщений: 341
1

Некорректный ввод при многократном fgets

25.12.2015, 20:59. Показов 534. Ответов 1
Метки нет (Все метки)

Написал функцию, чтобы пользователь вводил только корректные данные (Чтобы не было пробелов и пустых строк).

Если ввести "123 456 789", то все хорошо и в массив записывается "123 456 789".
Стоит лишь раз в начале ошибиться пользователю, как ему предлагается повторить ввод и после ввода этой же строки возвращается "123". Что я забыл сделать перед повторным вызовом fgets?
Помнится, что для перед повторным использованием cin приходилось писать cin.clear(). Что-то подобное требуется для fgets?

Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void getLine(char* chArr)
{
    bool bValid = false;
    while (bValid == false){
        if (strlen(chArr) > 0){
           if (getNextSymbol(chArr, 0) != -1){
                bValid = true;
           }else{
                if (getNextSpace(chArr, 0) != -1){
                    sErrMsg();
                    clearArray(&chArr[0]);
                    fgets(chArr, sizeof(chArr), stdin);
                }else{
                    eErrMsg();
                    clearArray(&chArr[0]);
                    fgets(chArr, sizeof(chArr), stdin);
                }
           }
        }else{
            errMsg();
            clearArray(&chArr[0]);
            fgets(chArr, sizeof(chArr), stdin);
        }
    }
    return;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2015, 20:59
Ответы с готовыми решениями:

Fgets некорректный результат
#include <iostream> #include <cstring> #include <cstdio> using namespace std; bool password();...

Структуры, некорректный ввод
В чем ошибка в этом коде? при заполнении массива после ввода ФИО, просто выводит оставшееся...

Некорректный ввод русского текста
Всем привет..столкнулся с такой проблемой. Есть программа которая считывает с файла текст на...

Некорректный ввод/вывод в консоли
Код: puts("Введите данные для поиска:"); printf("Телефон : "); gets(foundRec.phone);...

1
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
25.12.2015, 22:48 2
Это чушь: sizeof(chArr). Должен быть указан размер буфера, а твоя функция его даже не знает, так как получает указатель.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2015, 22:48

Некорректный ввод чисел(округление)
Самый простой ввод числа:cin >> temp; При вводе "3.01" - temp=3.0999..98, что рушит все...

Некорректный ввод строк с использованием функции getline
Здравствуйте столкнулся с магической проблемой функция getline(); криво работает когда вызывается...

Обрезать строку при вводе через fgets
Всем доброго времени суток! Столкнулся с такой проблемой - заполняю список значений следующей...

Некорректный ввод чисел при работе с клавиатурой (Quartus)
Уважаемые форумчане! В этих делах я совсем новичок и не могу понять в чем проблема. У меня есть...

fgets не принимает ввод с клавиатуры
#include<stdio.h> #include<string.h> #include<conio.h> #define DEL " .,;:\t\n" int main() {...

Ошибка при многократном обращении к БД
Всем добрый день! Подскажите, появляется "Неопознанная ошибка" при многократном пересчете стоимости...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru