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

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

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

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

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

Выполняю задание по замене в строке одного заданного слова на другое. При вводе слова, на которое будем менять, пользователь ведь может ввести что-то вроде этого: "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh", из-за чего программа аварийно завершится.
Для того, чтобы это предотвратить, я написал вот такой кусок кода:
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[], который содержит слово, которое я хочу поменять
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 19:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос контроль размера строки при замене слов (C++):

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

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов - C++
мне нужна функция, которая во входе получает строку слов и рзделителей (&quot; &quot;, &quot;,&quot;, &quot;.&quot;, &quot;_&quot;, &quot;&quot;&quot;), а на выходе имеет массив слов из строки...

Контроль длины ввода строки - C++
как сделать проверку, чтобы вводимое значение не выходило за пределы выделенной памяти? int main() { char *name = new char; ...

Дана строка из 20 слов. Сформировать строку, составленную из последних букв всех слов исходной строки - C++
Задача: дана строка из 20 слов (или любого другого числа). Сформировать строку, составленную из последних букв всех слов исходной строки.

Обработка слов строки без массива слов - C++
В программе нужно обработать введенную строку , ввести некоторую разменость и вывести слова , рамерность которых больше за введенную . ...

Контроль ошибок при вводе - C++
Появился такой вопрос..как проконтролировать пользователя чтоб тот не вводил где не надо символы. if(cin.fail()) cout&lt;&lt;&quot;Только...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2012, 19:37
Привет! Вот еще темы с ответами:

Контроль ошибок при вводе - C++
есть, например, код #include &lt;iostream&gt; int main() { int i; cin &gt;&gt; i; return 0; }

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

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

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


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

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

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