Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическая замена символа в массиве 
:(
    Опции темы
supercelt
Дата 26.11.2017, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Всем привет. Прогаю на СИ под МК stm32. Вопрос такой:

Есть массив, с указателем на него

Код

char gsm_cusd_command[31] = "AT+CUSD=1,#,15\r";
char *gsm_point_cusd_command = gsm_cusd_command;


В процессе работы появляется ещё один массив, он тоже заранее известной длины, но он скажем так наполняется тем, что чел введёт с клавиатуры

Код

char gsm_ussd_balance_command_input[16] = ""; //Массив для хранения введённой USSD команды баланса из меню телефона
char *gsm_point_ussd_balance_command = gsm_ussd_balance_command;


После ввода, данные в этом массиве могут быть такими: *100#

А вопрос вот, нужно в исходном массиве заменить символ # на то что во втором массиве. А динамической заменой  я назвал, потому что надо в исходном массиве всё что после #  - подвинуть соответственно вправо. И должно получиться 

Код

char gsm_cusd_command[31] = "AT+CUSD=1,*100#,15\r";


Впринципе можно заморочиться и написать свою ф-ию, но нет ли стандартных решений, более лёгких что ли?
PM   Вверх
akizelokro
Дата 27.11.2017, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Да вообщем-то что так маета, что так маета (хоть и не очень большая) strcat/strncat либо разбор ручками.


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Курсант
Дата 22.12.2017, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



Первый массив разбейте на два. Получится 
Arr1 = "AT+CUSD=1,";
Arr2 = ",15\r"

Потом у Вас появляется третий массив.
Arr3 = "*100#".

Дописываете Arr3 к Arr1, потом к тому, что получилось дописываете Arr2.
PROFIT.
PM ICQ Skype   Вверх
Dov
Дата 23.12.2017, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Ну, если предположить, что данные выглядят как-то так:
Код

char  gsm_cusd_command[31]               = "AT+CUSD=1,#,15\r";
char *gsm_point_cusd_command             = strchr(gsm_cusd_command, '#');
char  gsm_ussd_balance_command_input[16] = "*100#";

то можно записать как-то так:
Код

strcpy(gsm_point_cusd_command, strcat(gsm_ussd_balance_command_input, gsm_point_cusd_command + 1));

Указатель перед этим нужно проверить на валидность.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1109 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.