|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
(C++) Char per stringhe come matrice
ciao
ho fatto questo: char *SoundLista[1000]; SoundLista[0]="suono0"; SoundLista[1]="suono1"; ecco se faccio così non ho niente mentre così sì: char *SoundLista[1000]={"suono0","suono1"}; SoundLista[0]="suono0"; SoundLista[1]="suono1"; in questo modo me li vede.............. ma ha me servirebbe riempire la matrice ha runtime e non per forza all'inizializzazione come devo fare? oppure cosa c'è che non và nel primo modo? ciao amici |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Devi prima allocare i dati per ogni elemento, altrimenti ti può creare grandi problemi...
Se non hai problemi di memoria fai così: char SoundLista[1000][MAX_PATH]; Ti alloca circa 250 Kb di memoria... Se invece vuoi allocare solo la memoria che ti serve ogni volta che vuoi inizializzare una stringa devi prima allocarla con new... SoundLista[x] = new char[strlen(stringa_da_inserire)+1]; strcpy(SoundLista[x], stringa_da_inserire); Altrimenti usi vector e string del C++... vector<string> SoundLista; SoundLista.push_back(stringa_da_inserire); |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
cionci stò in linea ho alcuni errori................
ho preferito questo: char SoundLista[1000][MAX_PATH]; SoundLista[NumeroFile][MAX_PATH] = char[strlen(Nom)]MAX_PATH; strcpy(SoundLista[NumeroFile][MAX_PATH], Nom); perchè? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Così:
SoundLista[NumeroFile] = new char[strlen(Nom)]; strcpy(SoundLista[NumeroFile], Nom); |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
SoundLista[NumeroFile] = new char[strlen(Nom)];
strcpy(SoundLista[NumeroFile], Nom); mi dà errore non può convertire da char * to char [260] |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Azzz....ho fatto un errore di confusione
![]() Basta la sola seconda riga... Lo spazio di memoriazzazione è già allocato...non c'è bisogno di new ![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
okay ora non ho errori ma SoundLista[NumeroFile]; non contiene nulla..............
Allora diciamola tutta: char *Nom = new char[a]; WideCharToMultiByte(CP_ACP, 0, finddata.cFileName, -1, Nom, a, NULL, NULL); strcpy(SoundLista[NumeroFile], Nom); Nom contiene effettivamente la stringa ma SoundLista[NumeroFile]; ..............no non hai l'impressione che bisogna aggiungere [MAX_PATH]......?? |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No... [MAX_PATH] serve a dimensionare le varie componenti del vettore di stringhe...
Tanto per farti capire, se tu dichiari una stringa così: char s[MAX_PATH]; [MAX_PATH] non lo inserisci mai nelle operazioni sulle stringhe... |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Allora perchè ho la stringa SoundList[NumeroFIle]........ vuota
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
scusami cionci ero io che non controllavo bene il debug infatti ho stampato nel log.txt le stringhe e tutto è corretto...........
scusami sono un pò stanco ciao |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Se invece volessi usare quest'altra:
SoundLista[NumeroFile] = new char[strlen(NomeFile)+1]; la dichiarazione come la faccio? così ho errori char SoundLista[1000][MAX_PATH]; ... abbia pietà |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Così: char *SoundLista[1000];
Ovviamente devi ripulire ogni stringa con delete dopo che l'hai usata... delete[] SoundLista[i]; |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:00.