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

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

Войти
Регистрация
Восстановить пароль
 
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
#1

Функция изменяющая сразу несколько строк - C++

28.05.2012, 01:30. Просмотров 452. Ответов 6
Метки нет (Все метки)

Нужно, чтобы функция редактировала несколько входящих строк.
C++
1
2
3
char str1[10];
char str2[10];
void function1(char*& str1, char*& str2)
Вышеприведённый код кривой, ибо, как гласит гугл,
на входе имеем указатель не на char, поэтому создаётся временная переменная типа char*, присваивается ей значение этого указателя, и передаётся в функцию уже ссылка на неё (адрес этой временной переменной) - именно об этом компилятор и предупреждает. В результате в функции обнуляется именно эта временная переменная, а не тот указатель, который хотел бы обнулить
Как же сделать функцию, которая принимает несколько строк и может свободно их менять? Помогите плз )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 01:30     Функция изменяющая сразу несколько строк
Посмотрите здесь:

как удалять несколько символов сразу из строк? - C++
как удалять несколько символов сразу из строк? к примеру: Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

Функция, изменяющая входящие параметры - C++
Можно ли сделать функцию, чтобы она изменяла переменные, которые ей передаются и массив (тоже передается)? Причем массив не обьявлен, как...

Функция, изменяющая число, переданное ей в качестве параметра - C++
Разработайте функцию Invert, которая возвращает число, полученное записью всех цифр некоторого натурального N в обратном порядке. Т.е.,...

Записать в файл несколько строк, а затем записать несколько строк из этого файла в другой - C++
Заранее создать текстовый файл 1.txt и записать в него несколько строк текста. Программа должна получить из него второй файл 2.txt, в...

Как быстро подключить сразу несколько include - C++
Нужно сделать так, чтобы # include "название .h" включала в себя #include <iostream> #include <string> #include <vector> #include...

Добавить сразу несколько элементов в начало вектора - C++
как добавить НЕСКОЛЬКО РАЗОМ элементов в начало? без цикла(т.к. 200 раз это долго)

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
28.05.2012, 01:47     Функция изменяющая сразу несколько строк #2
Смотря что понимается под "менять". Если нужно менять только содержимое str1 и str2, то достаточно этого:
C++
1
void function1(char* str1, char* str2)
Если же нужно динамически выделять/удалять память под эти строки, то статические массивы на вызывающей стороне никак не подходят.
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 02:01  [ТС]     Функция изменяющая сразу несколько строк #3
Тогда получается, что я глупо ошибся, когда тестировал такой вариант... Писать
C++
1
str1="abcd";
оказалось некорректно, чего-то думал что после перехода на указатели мы просто по указателю на 1ый элемент массива можем вот так присваивать данные, казалось логичным.

А есть ли ещё какие-либо более адекватные варианты присваивания строки, кроме поэлементно и strcpy() ? А то поэлементно не вариант, а при strcpy(str1, "abcd"); мне кажется получается так, что сначала создаётся строка в памяти и потом перезаписывается в другой сектор памяти... Как-то не оптимально, что-ли )
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
28.05.2012, 02:13     Функция изменяющая сразу несколько строк #4
Цитата Сообщение от 33parrots Посмотреть сообщение
а при strcpy(str1, "abcd"); мне кажется получается так, что сначала создаётся строка в памяти и потом перезаписывается в другой сектор памяти... Как-то не оптимально, что-ли )
Строка "abcd" не создаётся, а загружается вместе с самой программой из файла. При запуске. Менять эту строку нельзя. Так что strcpy() это правильный путь. Ещё strdup() можно использовать, если строку надо не просто скопировать, но сперва выделить для неё место (ровно по длине строки).
Но раз уж тут C++, то для современного языка более естественными являются строки std::string.

Добавлено через 4 минуты
Ах, забываю всё время, что strdup это из POSIX. Она не является частью библиотеки Си.
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 02:18  [ТС]     Функция изменяющая сразу несколько строк #5
Grizlik78, а может Вы случайно занимаетесь репетиторством? С радостью взял бы пару часов )
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
28.05.2012, 02:20     Функция изменяющая сразу несколько строк #6
Не-е-ет! И так не знаю, как заставить себя пойти поработать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2012, 02:29     Функция изменяющая сразу несколько строк
Еще ссылки по теме:

записать несколько элементов в вектор сразу, как в массиве - C++
Добрый день, форум. Возможно ли в векторе записать несколько элементов одним разом, как в массиве? Например: массив: int massive =...

Функция PlaySound воспроизводит звук и возвращает управление СРАЗУ ЖЕ (но это неправильно), почему? - C++
Друзья! Вот код: #include <windows.h> #include <stdio.h> int main (){ PlaySound ("fail.wav", 0, SND_FILENAME || SND_SYNC); ...

функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? - C++
Друзья! Есть какой-нибудь способ без if-else? Ну то есть вот код: #define odin 1 ////////////всякий код int f () {retutn...

Как прочитать сразу два txt файла, в каждом из них находится массив строк? - C++
Потом нужно будет объединить два массива в один.


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

Или воспользуйтесь поиском по форуму:
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 02:29  [ТС]     Функция изменяющая сразу несколько строк #7
ну, ответ был довольно предсказуем ) Хотя жаль, конечно же. Я был бы толковым учеником, инфа 100%. Да и цену то Вы предлагаете, не я ))
Yandex
Объявления
28.05.2012, 02:29     Функция изменяющая сразу несколько строк
Ответ Создать тему
Опции темы

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