Precedente :: Successivo |
Autore |
Messaggio |
saetta Eroe in grazia degli dei
Registrato: 25/02/08 10:52 Messaggi: 129
|
Inviato: 07 Mar 2012 17:22 Oggetto: [C] stringhe |
|
|
Salve,
mi assale un dubbio...
Se faccio una cosa del genere:
Codice: | ...
char *str, p;
str = "ho %un bel du%bbio";
...
p = str;
while(*p != '\0')
{
if (*p == '%')
*p = '&' /*Vorrei sostituire tutti i '%' con '&' */
p++;
} |
Domandone:
Sto facendo una stupidaggine perchè su una stringa allocata staticamente non posso modificare alcun carattere inquanto è considerata una costante???
In breve, vorrei sostituire in una data stringa s, tutte le occorrenze di un dato carattere c, mi son servita di strchr(s,c) per localizzarlo ma al momento di rimpiazzarlo si pianta l'esecuzione... |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 08 Mar 2012 10:18 Oggetto: |
|
|
Sintatticamente non è vietato fare una cosa del genere, il problema nasce dal fatto che la stringa costante potrebbe essere allocata in un'area a sola lettura, provocando quindi una violazione d'accesso a runtime.
Di norma si copia la stringa in una nuova, allocata a runtime, e si modifica la copia.
edit: comunque dalla tua dichiarazione, p è un char, non un char* ... |
|
Top |
|
|
saetta Eroe in grazia degli dei
Registrato: 25/02/08 10:52 Messaggi: 129
|
Inviato: 08 Mar 2012 17:46 Oggetto: |
|
|
si... ho sbagliato la dichiarazione di p è in realtà
sta di fatto che l'esecuzione si pianta proprio quando tento di modificare suddetta stringa costante... non mi resta che allocarmi una copia (un'altra...LOL) e sostituirla poi nella struct.
grazie! |
|
Top |
|
|
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|