PDA

View Full Version : modifica di una stringa


71104
15-07-2005, 18:20
avete presente quando uno diventa scemo per un pomeriggio sano su una cavolata? :muro:
sta succedendo a me in questo esatto momento :mad:

allora: quando uno dichiara una stringa e la inizializza così:

char *s = "blah blah blah";


è poi possibile modificare il contenuto della stringa?
ed è possibile se invece io la dichiaro così:

const char *s = "blah blah blah";

?

no perché mi ci sto rimbecillendo...
tante volte la risposta fosse che no, non è possibile (come suppongo e spero che sia), qual è il dannato motivo??? :mad:
la pagina che contiene quei dati è in sola lettura??? e perché mai dico io?!??

bene, grazie per le eventuali risposte, e ora faccio quello che faccio sempre quando passo pomeriggi simili: spengo tutto, esco, me ne vado a correre e corro finché non mi salta un pistone!!! :muro:

(dannazione, non c'è una faccina ad alta velocità qui...?)

cikko
15-07-2005, 18:49
allora: quando uno dichiara una stringa e la inizializza così:

char *s = "blah blah blah";

è poi possibile modificare il contenuto della stringa?

Dipende dal compilatore, infatti ce ne sono alcuni che "ripongono" la stringa in modalita' a sola lettura, e poi non e` possibile modificarla.


ed è possibile se invece io la dichiaro così:

const char *s = "blah blah blah";

?

dunque, puntatore *non* costante a stringa costante: non si puo' modificare la stringa, ma e` possibile modificare il puntatore per scorrere la stringa.

const char *const string = "prova text"

in questo caso non si puo' nemmeno scorrere il puntatore. Per intenderci e` il caso di un vettore: int arr[10];

il nome "arr" e` un puntatore costante al primo elemento, e questo non si puo' modificare.

Saluti

71104
15-07-2005, 20:21
Dipende dal compilatore, infatti ce ne sono alcuni che "ripongono" la stringa in modalita' a sola lettura, e poi non e` possibile modificarla. hmmm... :mbe: evidentemente l'Intel lo fa: mi piacerebbe tanto sapere che senso ha questa cosa... :mbe:
e ora io come faccio? sto facendo un programma in cui tutte le stringhe che uso le voglio codificare; al momento dell'uso le decodifico temporaneamente e poi le ricodifico subito, ma se il compilatore fa lo sterco (per non usare altre parole) io non posso modificarle... non ditemi che devo allocare apposta spazio a parte ogni volta :muro:

cikko
15-07-2005, 21:21
per quanto riguarda il programma che stai facendo, suppongo che si tratta del C perche' se in C++ c'e' la classe <string>, IMHO userei gli array:
char string[] // almeno questo puoi modificarlo

ora devo proprio uscire, a domani o a domenica.

Saluti

71104
15-07-2005, 22:26
per quanto riguarda il programma che stai facendo, suppongo che si tratta del C perche' se in C++ c'e' la classe <string>, IMHO userei gli array: supponi bene perché il programmetto mio sto cercando di farlo snello il più possibile (capirai se inizio a usare le classi, specie le STL, qua andiamo a botte di megabyte).

char string[] // almeno questo puoi modificarlo MHUWAHUWAHUWHAUWHUA SEI GRANDE, FUNZIONA!!!!!! :D :D :D
grazie di tutto, ciao! :)

cikko
16-07-2005, 16:35
(capirai se inizio a usare le classi, specie le STL, qua andiamo a botte di megabyte).
comunque <string> non fa parte di STL, pero' se non vuoi classi allora lascia come stai facendo.

Saluti