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

Написать функцию replace для массива char'ов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Union
 Аватар для Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252
01.05.2012, 21:09     Написать функцию replace для массива char'ов #1
Нужно написать функцию замены подстроки f на подстроку t в строке а:
C++
1
int replace(char a[], const char f[], const char t[])
f может быть равна или больше t, но не меньше. Нельзя использовать stl.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2012, 21:09     Написать функцию replace для массива char'ов
Посмотрите здесь:

C++ Написать функцию для обмена строк двумерного массива
Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s[]) ) и тестирующую C++
C++ написать функцию для записи в файл массива структур
Написать функцию, которая переворачивает строку (массива типа char). C++
Написать функцию для записи в файл массива структур C++
C++ Написать функцию для удаления строки из двумерного массива
C++ Написать функцию sort() для сортировки массива структур
Написать функцию для обработки одномерного массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
02.05.2012, 15:05     Написать функцию replace для массива char'ов #2
Дело в том, что если длина строки f >= t, то она никогда не будет подстрокой t.
Уточните задание, плиз.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
02.05.2012, 16:09     Написать функцию replace для массива char'ов #3
При чем тут будет подстрокой t? По простому - вырезаем определенный кусок текста и записываем на его место другой.

Добавлено через 57 минут
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
#include <iostream>
#include <cstring>
 
char *replace( char *str, const char *f, const char *t ) {
   char *tmpPtr = strstr( str, f );
   
   if ( tmpPtr != 0 && strlen( f ) >= strlen( t )) {
      std::size_t sizeDiff = strlen( f ) - strlen( t );
      
      strncpy( tmpPtr, t, strlen( t ));
      
      if ( sizeDiff > 0 )
         for ( tmpPtr += strlen( t ); *tmpPtr != '\0'; tmpPtr++ )
            *tmpPtr = *( tmpPtr + sizeDiff );
      
   } else
      return 0;
   
   return str;
}
 
int main( ) {
   char str[] = "happy blah year";
   
   std::cout << str << std::endl;
   
   replace( str, "blah", "new" );
   
   std::cout << str << std::endl;
   
   return 0;
}
Вывод.
Yandex
Объявления
02.05.2012, 16:09     Написать функцию replace для массива char'ов
Ответ Создать тему
Опции темы

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