Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2010, 19:19   #1
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию Функция вставки строки в строку (с++)

Никак не пойму как написать сее чудо, тип возвращаемого значения должен быть char, ввожу дополнительную строку и загоняю в нее до позиции вставки символы исходной строки, затем символы строки которую нужно вставить, и снова оставшиеся символы исходной строки. Возвращаю новую строку, но почему то все время после вставки выводятся какие то иероглифы....
Lazy maximka вне форума Ответить с цитированием
Старый 04.12.2010, 19:33   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

покажите код
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 04.12.2010, 19:54   #3
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Код:
char* strins(char*sub,char*source,int p)
{int i=0,s=strlen(source),k=strlen(sub),n=0;
char source2[100];
for (i;i<99;i++)
source2[i]='w';
printf("%s ",source2[2]);
if (p<=s)
   {do {source2[p]=sub[n];
    p++;
    n++;}
    while (n<k);
	n=0;
	i=0;
	do {if(source2[i]=='w')
         {source2[i]=source[n];
         n++;}
	   i++;}
	while(i<s+k);
source2[s+k]='\0';} 
return source2;}
это правда уже переработаный но заодно интересно что и здесь не так?

а вот исходный

Код:
char* strins(char*sub,char*source,int p)
{int i=p,s=strlen(source),k=strlen(sub),n=0;
char source2[100];
do 
{ source2[n]=source[n];
  n++;}
while(n<p);
n=0;
do {source2[i]=sub[n];
 n++;
 i++;}
while (i<k);
i=k+p;
do {source2[i]=source[p];
 i++;
 p++;}
while(p<s);
source2[s+k]='\0';
return source2;
}
Lazy maximka вне форума Ответить с цитированием
Старый 04.12.2010, 20:03   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Решение 'в лоб':
Код:
char* strins(char*sub,char*source,int p)
{
	char result[100];
	unsigned int i, m, j;
	for (i = 0; i<p-1; i++)
		result[i] = source[i];
	m = i;
	for (i = 0; i<strlen(sub); i++)
		result[m+i] = sub[i];
	j = i;
	for (i = m; i<strlen(source); i++)
		result[j+i] = source[i];
	result[j+i] = '\0';
	return result;
}
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 04.12.2010 в 20:33.
russian-stalker вне форума Ответить с цитированием
Старый 04.12.2010, 20:20   #5
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Это так принципиально? и вообще пробовал вставить в код функции вывода...так вот строку source он выводит а при попытке вывести n -ый элемент почему то виснет

хм, почему то теперь вообще ничего не выводит

Последний раз редактировалось Stilet; 04.12.2010 в 21:15.
Lazy maximka вне форума Ответить с цитированием
Старый 04.12.2010, 20:31   #6
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Как вызываете функцию?
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 04.12.2010, 20:38   #7
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Код:
int _tmain(int argc, _TCHAR* argv[])
{int p=2;
char source[]="dalas",sub[]="ne";
printf("stroka %s posle vstavki = %s ",source,strins(sub,source,p));
	return 0;
}
Lazy maximka вне форума Ответить с цитированием
Старый 04.12.2010, 20:47   #8
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Цитата:
Сообщение от Lazy maximka Посмотреть сообщение
Код:
int _tmain(int argc, _TCHAR* argv[])
{int p=2;
char source[]="dalas",sub[]="ne";
printf("stroka %s posle vstavki = %s ",source,strins(sub,source,p));
	return 0;
}
Выдало dnealas, что и должно. Нет?
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 04.12.2010, 21:05   #9
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

пустая строка выводится

Так что делать то, почему ниче не выводится ?

Последний раз редактировалось Stilet; 05.12.2010 в 19:47.
Lazy maximka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить направление вставки строки Andrey85 Microsoft Office Excel 3 03.12.2010 18:43
Функция для определения числа вхождений подстроки в строку motorway Microsoft Office Excel 1 15.07.2009 23:28
функция: копирование части строки в другую строку plasticman Microsoft Office Excel 1 18.03.2009 15:30
Функция возвращающая строку(си++). necky Помощь студентам 1 18.10.2008 18:32
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45