[C]Operacje na łańcuchach

0

Mam problem z napisaniem funkcji, która dokonuje splotu dwóch stringów działając na wskaźnikach. Ma to wyglądać tak:

char *s1 = "ABC", *s2 = "abc", *s3;

s3 = splot(s1,s2); // jak napisać tę funkcję???

// s3 = "AaBbCc";

0

Napisałem taką funkcję:

char* komutuj(char *s1, char *s2)
{
char *s3,*st=s3;

    while(*s1)
    {
            *s3++ = *s1++;
            *s3++ = *s2++;
    }
    *s3 = NULL;
    return st;

}

I ona nawet działa ale program na końcu wyrzuca mi błąd dostępu do pamięci. Chyba coś popsułem ze wskaźnikami...

0

EUREKA! W mojej funkcji tworzę dynamicznie string s3 o długości równej sumie długości s1 i s2:

s3 = (char)malloc((strlen(s1)+strlen(s2)-2)*sizeof(char));

a potem ucinam go gdy kończy się s1 przypisaniem:

*s3=NULL;

I teraz błąd alokacji już zniknął!

0

I jeszcze małe zabezpieczenie w pętli dla stringów s1 i s2 o różnej długości:

while(*s1 && *s2)
{
..........................

0

Wiecie co? Ta funkcja może mieć JEDEN WIERSZ KODU:

while((*s3++=*s1++) && (*s3++=*s2++)) // !!!

Na oko działa mi to poprawnie! Jeśli to dobrze to C jest PRAWIE asemblerem!!!

0

Myślałeś nad tym żeby zacząć prowadzić bloga? :P

0
Malcolm napisał(a)

Myślałeś nad tym żeby zacząć prowadzić bloga? :P

A myślałeś o tym, że już czas na złomowanie ? :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1