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

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

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

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

22.04.2012, 19:37. Просмотров 243. Ответов 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     контроль размера строки при замене слов
Посмотрите здесь:

Контроль ввода размера массива - C++
Здравствуйте. Пишу программу которая получает на вход число - размер массива и выводит рандомный массив указного размера. Возник следующий...

Почему перестает работать программа при замене double на long double? - C++
Здравствуйте! Прошу помощи чтобы разобраться в следующем вопросе: Нашел программу в интернете, запустил - все работает, но когда решил...

Контроль корректности при приведении типа указателя - C++
Требуется максимально корректно проверить, что переменная типа viod* содержит указатель на объект некоторого класса TDerived,...

Контроль выхода за границы памяти при заполнении поля класса - C++
Доброго времени суток В классе есть поле, представляющее собой динамический массив. Есть метод, который может это поле &quot;заполнить&quot;. ...

Изменение размера строки - C++
На сколько я помню изменить размер строки можно при помощи библиотечной функции resize(); , но, я не помню как она реализуется. Вроде...

Scanf() для строки любого размера - C++
Здравствуйте! Проблема следующая: нужно реализовать ввод и вывод с клавиатуры текста при помощи функций scanf() и printf(). Я знаю как это...

Ввод и вывод строки неизвестного размера - C++
Как ввести и вывести строку неизвестного размера в c++? Нигде просто нормального объяснения не нашел.

Определение размера строки массива строк - C++
Здравствуйте! Visual C++ char *my_string={&quot;Это первая строка&quot;, &quot;Это вторая строка&quot;, &quot;Это третья строка&quot;, ...

Дана действительная матрица размера 3*3. Найти сумму наибольших значений строки - C++
Дана действительная матрица размера 3*3. Найти сумму наибольших значений строки. #include &lt;iostream&gt; using namespace std; int...

Строки Слов - C++
Ввести с клавиатуры строку символов, состоящую из слов, разделенных между собой одиночными пробелами. Если в строке оказалось не менее 2...


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

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

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