PDA

View Full Version : [C]spezzare stinghe


noodles83
11-05-2006, 14:56
scusate la domanda banale, ma sono alle prima armi...

ho una stringa che contiene un nome seguito dal terminatore di stringa '\0'seguito a suo volta da un messaggio

come faccio a dividere le due stringhe ognuna con il suo puntatore?

io ci ho provato con strtok ma ho sempre segmation fault!! sto impazzendo!

andbin
11-05-2006, 15:03
scusate la domanda banale, ma sono alle prima armi...

ho una stringa che contiene un nome seguito dal terminatore di stringa '\0'seguito a suo volta da un messaggio

come faccio a dividere le due stringhe ognuna con il suo puntatore?

io ci ho provato con strtok ma ho sempre segmation fault!! sto impazzendo!Ciao, è molto semplice:
char *str = "aaaa\0bbbb";
char *p2;

p2 = str + strlen (str) + 1;

noodles83
11-05-2006, 15:15
Ciao, è molto semplice:
char *str = "aaaa\0bbbb";
char *p2;

p2 = str + strlen (str) + 1;

si però io devo cercare di avere

str che punta a "aaaa\0"

e p2 che punta a "bbbb";

come dici tu str mi rimane "aaaa\0bbbb";

andbin
11-05-2006, 15:26
si però io devo cercare di avere

str che punta a "aaaa\0"

e p2 che punta a "bbbb";

come dici tu str mi rimane "aaaa\0bbbb";Ma no. La prima stringa è già terminata!!! ;)

noodles83
11-05-2006, 15:29
ah è vero!

e se per esempio voglio che str diventi "aaaaaaaaaaaaa\0bbbb"

cioè la parte dopo il termiantore rimane identica la parte prima viene sostituita con quaclosa di piu lungo

come posso fare?

andbin
11-05-2006, 15:35
e se per esempio voglio che str diventi "aaaaaaaaaaaaa\0bbbb"

cioè la parte dopo il termiantore rimane identica la parte prima viene sostituita con quaclosa di piu lungo

come posso fare?Non vedo altro modo che scrivere la nuova prima stringa in un'altra zona di memoria e poi copiare dietro il '\0' (della prima) la vecchia seconda stringa.