|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2001
Messaggi: 75
|
Spaccare una stringa in C
Buon pomeriggio a tutti.
Ho una stringa fatta così "CODE01|CODE02|CODE03|CODE04|" come posso spaccarla dove c'é il "|" ed assegnare ogni codice ad una variabile diversa?? Ho provato con sscanf() ma non ci sono riuscito. Grazie per l'aiuto. Ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
//N è il numero massimo di stringhe che puoi avere
//K è il numero di caratteri contenuti in ogni stringa (in questo caso 6)
char *str[N+1];
char strToSplit[N*(K+1)+1];
int i = 0, j;
//qui riempirai strToSplit
str[0] = strToSplit;
while(str[i][0] != '\0')
{
++i;
str[i] = strtok(str[i-1], "|");
str[i] += strlen(str[i]) + 1;
}
for(j=0; j<i; ++j)
printf("%s\n",str[j]);
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2001
Messaggi: 75
|
Ok! Grazie cionci, questo l'ho capito!
E se non conosco la lunghezza delle stringhe?? Ad esempio: CODE1|AAA|BBBBBBBB|CCCC| come posso ottenere: string1 =="CODE1" string2 =="AAA" string3=="BBBBBBBB" string4=="CCCC"?? Esiste una funzione del tipo: funzione(stringa_di_partenza, "%s|%s|%s|%s|", string1, string2, string3, string4) ho devo cercare all'interno della stringa il carattere PIPE con un contatore per sapere a quale stringa assegnare la substring che ho trovato ? Grazie |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il metodo che ho usato io funziona anche per quel caso...però devi rinunciare a dimensionare in un modo preciso strToSplit...
Dagli una dimensione piuttosto grande e fai tutto come ho scritto io... |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2001
Messaggi: 75
|
Scusa se rispondo solo ora, ma sai ho dovuto staccare la spina altrimenti mi mandavano all'ospedale psichiatrico
Sulla riga: str[i] += strlen(str[i]) + 1; mi da un Expression sintax e sinceramente non riesco a capire cosa dovrebbe fare (ho tolto il + ma a quel punto compila ma non funziona). Intanto faccio delle prove e spero tu mi possa aiutare ancora, comunque un grosso grazie!! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Strano...a me compila tranquillamente...hai incluso string.h ?
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2001
Messaggi: 75
|
Sì.
Adesso provo a fare un programmino che fa solo quello per vedere se così me lo compila. |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Feb 2001
Messaggi: 75
|
Sono un asino.
Avevo scritto str[i]+ = strlen(str[i]) + 1; ci credo che non riusciva a compilarlo. Grazie cionci, quella parte di programma ora funziona, adesso devo solo riuscire a far restituire le stringhe alla funzione chiamante, ma è un altro problema. Per ora ti ringrazio tanto (al massimo ti disturberò ancora ma voglio provare a risolverlo da solo) . |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:12.



















