Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[C] stringhe
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
saetta
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 25/02/08 10:52
Messaggi: 129

MessaggioInviato: 07 Mar 2012 17:22    Oggetto: [C] stringhe Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 08 Mar 2012 10:18    Oggetto: Rispondi citando

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.

Ciao

edit: comunque dalla tua dichiarazione, p è un char, non un char* ...
Top
Profilo Invia messaggio privato HomePage
saetta
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 25/02/08 10:52
Messaggi: 129

MessaggioInviato: 08 Mar 2012 17:46    Oggetto: Rispondi

si... ho sbagliato la dichiarazione di p è in realtà
Codice:
char *p;

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! Smile
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
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