
30.06.2009, 16:30
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
написал функцию для склейки строк. возвращает указатель на новую полученную строку.
PHP код:
char *split(char *s1, char *s2)
{
int j = 0;
char *p = new char;
while(*s1 != '\0')
p[j++] = *s1++;
j--;
while(*s2 != '\0')
p[j++] = *s2++;
return p;
}
вот использование:
PHP код:
int main()
{
char s1[] = "str1";
char s2[] = "str2";
char *s3 = new char;
s3 = "teerr";
char *p = split(s1, s2);
char *p2 = split("ololo", "str");
char *p3 = split(s3, "miha");
cout << "1: " << p << endl << "2: " << p2 << endl << "3: " << p3;
return 1;
}
склеиваются шесть разных строк.
первые две нормально,
но что за хрень творится с третьей я понять не в состоянии:
PHP код:
s3 = "teerr";
char *p3 = split(s3, "miha");
cout << p3; // выводит: teerrmiha + 3 квадратика непечаемых символов!
s3 = "teerrS";
char *p3 = split(s3, "miha");
cout << p3; // выводит: teerrmiha -- буква S - исчезла, но и лишние символы тоже
добавляю один символ к первой строке и результат почти правильный. иначе - три непечатаемых символа. как это понять?
|
|
|