Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
#1

контроль размера строки при замене слов - C++

22.04.2012, 19:37. Просмотров 236. Ответов 0
Метки нет (Все метки)

Выполняю задание по замене в строке одного заданного слова на другое. При вводе слова, на которое будем менять, пользователь ведь может ввести что-то вроде этого: "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh", из-за чего программа аварийно завершится.
Для того, чтобы это предотвратить, я написал вот такой кусок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
......
int size = 256;
char zamena[size];
int ch = 0; //для интерфейса с пользователем(выводит "поле" "Ввод: " если допущена ошибка при вводе)
while(1)
{
    if(ch > 0)
        cout << "Ввод: ";
    cin >> zamena;
    if(strlen(string) + strlen(zamena) - strlen(slovo) >= 256)
    {
        cout << "Слишком длинное слово для замены. Исправьтесь и повторите ввод.\n";
        ch++;
        continue;
    }
    else
        break;
}
......
Проблема заключается в том, что если пользователь введет то, что представлено выше, то программа укажет на ошибку и предложит ввести данные заново. Но после этого, даже когда ввожу один символ для замены, программа все равно выдает ошибку.

Вот и, собственно, вопрос: почему так происходит?

Заранее всех благодарю!

Добавлено через 4 минуты
Дополнение: даже бывает так, что и вводит, но присваивает часть символов из массива zamena[] и массив slovo[], который содержит слово, которое я хочу поменять
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 19:37     контроль размера строки при замене слов
Посмотрите здесь:

Добавить в конец первой строки, последние n2-n1 слов второй строки C++
C++ Контроль ошибок при вводе
C++ Контроль ошибок при вводе
C++ Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
C++ Обработка слов строки без массива слов
Контроль выхода за границы памяти при заполнении поля класса C++
Контроль длины ввода строки C++
C++ Контроль ввода размера массива
Почему перестает работать программа при замене double на long double? C++
Контроль корректности при приведении типа указателя C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru