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

Функция должна заменять каждое появление с1 в строке str на с2 - C++

Восстановить пароль Регистрация
 
xarakara
0 / 0 / 0
Регистрация: 10.08.2014
Сообщений: 2
10.08.2014, 12:00     Функция должна заменять каждое появление с1 в строке str на с2 #1
Не работает код

IDE VC++ 2010 Win7

Прата С. - Язык программирования С++. Лекции и упражнения - 2011
Вопросы для самоконтроля
8. Напишите функцию, имеющую следующий прототип:
int replace (char * str, char cl, char c2) ;
Эта функция должна заменять каждое появление с1 в строке str на с2 и
возвращать количество выполненных замен.

После запуска следующая ошибка
Функция должна заменять каждое появление с1 в строке str на с2



Кликните здесь для просмотра всего текста
C++
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
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
 
using namespace std;
 
int replace(char *str,char c1,char c2);
 
int main()
{
 
    char *str="1111-1111";// если поменять на
                          // char str[]="1111-1111";
                          // то все работает
 
    char c1='1';
    char c2='5';
    int value=0;
    cout << str << endl;
 
    value=replace(str,c1,c2);
 
    cout << value << endl;
    cout << str << endl;
 
    return 0;
}
 
int replace(char *str,char c1,char c2){
    int value=0;
    while(*str){
        if(*str == c1){
            *str = c2;
            value++;
        }
        str++;
    }
    return value;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2014, 12:00     Функция должна заменять каждое появление с1 в строке str на с2
Посмотрите здесь:

заменить сочетание слов в строке(str) C++
C++ Написать и протестировать функцию, которая по заданной строке Str формирует новую строку, состоящую только из цифр, входящих в Str
Написать функцию setmin(T&x). Она должна заменять x на элемент, заведомо меньший всех элементов массива C++
Функция в строке должна вычислять количество слов (слова разделяются пробелом) C++
C++ как создать функцию или программу, чтобы str состояла из цифр,а также давалась новой строке str
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
10.08.2014, 12:09     Функция должна заменять каждое появление с1 в строке str на с2 #2
Всё правильно, меняй на char str[], иначе указатель будет указывать на константу.
В чём вопрос?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
10.08.2014, 12:11     Функция должна заменять каждое появление с1 в строке str на с2 #3
Цитата Сообщение от xarakara Посмотреть сообщение
C++
1
2
3
char *str="1111-1111";// если поменять на
             // char str[]="1111-1111";
             // то все работает
Потому что когда Вы пишите char* (хотя должно быть как минимум const char*) выделения памяти доступной для записи не происходит.
Создается строковый литерал, который нельзя изменять. Из-за этого и ошибка при запуске.
Когда пишите char[], то создается массив (и выделяется память), который можно изменять. И пока не выйдите за рамки этого массива изменения содержимого допустимы.
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,732
Завершенные тесты: 5
10.08.2014, 12:20     Функция должна заменять каждое появление с1 в строке str на с2 #4
xarakara, вы присваиваете значение "константе"
xarakara
0 / 0 / 0
Регистрация: 10.08.2014
Сообщений: 2
10.08.2014, 12:25  [ТС]     Функция должна заменять каждое появление с1 в строке str на с2 #5
все понял большое спасибо всем
Yandex
Объявления
10.08.2014, 12:25     Функция должна заменять каждое появление с1 в строке str на с2
Ответ Создать тему
Опции темы

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