Показать сообщение отдельно

  #243  
Старый 30.06.2009, 16:30
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

написал функцию для склейки строк. возвращает указатель на новую полученную строку.

PHP код:
char *split(char *s1char *s2)
{
    
int j 0;
    
char *= 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 *split(s1s2);
    
char *p2 split("ololo""str");
    
char *p3 split(s3"miha");

    
cout << "1: " << << 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 - исчезла, но и лишние символы тоже 
добавляю один символ к первой строке и результат почти правильный. иначе - три непечатаемых символа. как это понять?
 
Ответить с цитированием