PDA

Visualizza la versione completa : [C] Concatenare stringhe


kill9
19-11-2008, 13:24
Ciao, ho il seguente problema: ho quattro stringhe cosė dichiarate



char * a, *b, *c, *d;


Devo creare una stringa concatenado le quattro stringhe, ma devono essere separate da '\0', come posso fare?

Esempio
a = ciao
b=pippo
c=come
d=stai

devo creare una stringa cosė: "ciao\0pippo\0come\0stai"

Grazie

oregon
19-11-2008, 13:26
Intanto fai attenzione perche' quelli sono 4 puntatori, non stringhe (non c'e' lo spazio allocato ...).

Per concatenare in quel modo, devi usare una funzione di copia di memoria, ad esempio la memcpy. Non usare le funzioni stringa (strcap, strcpy) perche' i caratteri null vengono eliminati e viene conservato solamente l'ultimo.

kill9
19-11-2008, 14:00
Sono riuscito a concatenarle, ora ho il problema di separare la stringa per riavere le stringhe originarie.
Avrei pensato di usare la sscanf ma ho dei problemi con la stringa di formato.
Io ho scritto cosė:



"%[^'\0']%[^'\0']%*['\0']%[^'\0']%*['\0']%s"


Ma il compilatore mi da un errore per \0. Come posso indicare lė il carattere \0?

oregon
19-11-2008, 14:03
Non sto capendo piu' quale sia il tuo problema ...

kill9
19-11-2008, 15:22
Scusami forse sono stato poco chiaro. Sono riuscito a costruire la stringa concatenando le quattro stringhe separate da un carattere '\0', ora quello che devo fare č presa questa stringa riottenere le quattro stringhe di partenza.

oregon
19-11-2008, 15:23
Se sei riuscito a concatenare le 4 stringhe, allora le hai gia' le 4 stringhe separate ... :confused:

kill9
19-11-2008, 15:27
Sto realizzando un client e un server, il client effettua la concatenazione ed invia la stringa al server, il server deve separare la stringa nelle quattro stringhe.

oregon
19-11-2008, 15:43
Beh ... dirlo prima, dando tutti i dettagli nel primo post, non sarebbe male ...

Dato che c'e' il carattere nul nella stringa, non puoi utilizzare la funzione strtok, ma devi scorrere la stringa e cercare, carattere per carattere, il nul ...

Loading