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

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

Восстановить пароль Регистрация
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
22.04.2012, 19:37     контроль размера строки при замене слов #1
Выполняю задание по замене в строке одного заданного слова на другое. При вводе слова, на которое будем менять, пользователь ведь может ввести что-то вроде этого: "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     контроль размера строки при замене слов
Посмотрите здесь:

C++ [c++] контроль ошибок при вводе
C++ Контроль ошибок при вводе
C++ Заданы 2 строки, состоящие из слов, разделенных пробелами. Приписать три символа второй строки к первой
C++ Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
C++ Обработка слов строки без массива слов
Контроль выхода за границы памяти при заполнении поля класса C++
Контроль длины ввода строки C++
C++ Контроль ввода размера массива

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

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

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