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

Обойти использование string.h - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Библиотека с сортировкай !!!!! http://www.cyberforum.ru/cpp-beginners/thread316314.html
#include < iostream > #include < conio.h > #include < windows.h > #include < iomanip > using namespace std; static short posionITR = 0 ; const short menu_size = 7 ; struct ID {
C++ даны 2 строки даны 2 строки символов S и t. сравнить эти строки используя указатели. функция выдает положительное, отрицательное или нулевое значение в зависимости от того, будет ли S Лексикографически <, =, >t.... http://www.cyberforum.ru/cpp-beginners/thread316310.html
C++ Прблема с ПК
Помогите пожалуйста. Была хр винда 2 года, было все нормально. Недавно начались тормоза в играх, таких как FLatOut2 Nfs MostWanTed и тд. почему-то в cs 1.6 и warcraft не лагает. А лаги такие......
C++ Программы разветвляющихся структур.
Здравствуйте, кому не сложно не могли бы вы помочь мне с решением лабораторной работы. Заранее благодарю. Задание Вычислить значение функции при заданных значениях параметров. Значения...
C++ Массивы, пж, срочно!( http://www.cyberforum.ru/cpp-beginners/thread316293.html
Ребят, помогите пж( 1. Cгенерировать массив из 30 чисел, распечатать их по 10 в строке. Найти min, среднее значение, сумму чётных чисел. 2. Дан массив размера N. Вывести вначале его элементы с...
C++ Алгоритм многопутевого слияния Задание: Отсортировать текстовый файл,содержащий целые числа,в порядке убывания методом многопутевого слияния. Если поможите буду очень признателен. подробнее

Показать сообщение отдельно
x-positive
1 / 1 / 0
Регистрация: 09.02.2011
Сообщений: 21

Обойти использование string.h - C++

09.06.2011, 02:22. Просмотров 436. Ответов 2
Метки (Все метки)

Мне нужно работать со строками, но не используя <string.h>
В частности я создал две функции, которые нужны мне при работе.
Первая должна полностью копировать действие strstr(), а вторая должна вставлять в строку s подстроку s1 на место, куда указывает указатель p, при этом остальная часть строки "сдвигается" на столько символов вправо, сколько содержит подстрока s1.

Но ни та ни другая не выполняют свою работу.
Помогите мне найти ошибки или предложите свой вариант, как можно выполнить те же действия.

Вот эти функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char* StrStr(char*s,char*s1)
{
 char *p="";
 int i,j,scop=0,found=0;
 
 for (i=0; s1[scop]!='\0'; i++)
 {
  if ( s[i] != s1[scop] ) { p=""; scop=0; found=0; }
  else { scop++; if (p=="") { for (j=0; s[j]!='\0';j++) p[j]=s[j+i]; found=1; p[j]='\0'; }}
 }
 if (!found) p=NULL;
 return p;
}
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
char* StrIns(char*s,char*s1,char*p)
{
 int i,j,len_P,len_S;
 char *pcopy=p;
 p=s;
 
 for(i=0; s[i]!='\0'; i++); len_S=i;
 for(i=0; p[i]!='\0'; i++); len_P=i;
 
 for(i=0; len_S-len_P; i++) p[i]=s[i];
 p[i]='\0';
 
 for(i=0; p[i]!='\0'; i++); len_P=i;
 
 for(i=0; s1[j]!='\0'; i++) p[i+len_P]=s1[i];
 p[i]='\0';
 
 for(i=len_P; p[i]!='\0'; i++); len_P=i;
 
 for(i=0; pcopy[j]!='\0'; i++) p[i+len_P]=pcopy[i];
 s[i]='\0';
 
 return p;
}
Добавлено через 2 часа 20 минут
Я нашёл функцию, подобную strtstr, но понять всё не в состоянии.
То есть понимаю как где что работает, но когда пытаюсь поменять хоть что нибудь на более простенькое для меня, но с большим количеством строк - перестаёт работать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* StrStr(char*s, char*s1)
{
 char *copy_s = s1, *copy_s1;
 while (*s)
  {
   copy_s1 = s;
   while(*(s++) == *(s1++))
    {
     if (!(*s1)) return copy_s1;
     if (!(*s)) return NULL;
    }
   s1 = copy_s;
  }
 return NULL;
}
И для меня остаётся открытым вопрос - как вставить подстроку в строку с заданной указателем позиции. (То есть после поиска функцией StrStr() мы получаем указатель на вхождение подстроки, в этом месте мне нужно вставить подстроку, скажем пробел или набор символов. При этом строка динамически увеличивает свой размер. Поможете разобраться?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru