 
View Full Version : 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
//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]);
Ciao...
Ok! Grazie cionci, questo l'ho capito!:D
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
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...
Scusa se rispondo solo ora, ma sai ho dovuto staccare la spina altrimenti mi mandavano all'ospedale psichiatrico :D.
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!!
Strano...a me compila tranquillamente...hai incluso string.h ?
Sì.
Adesso provo a fare un programmino che fa solo quello per vedere se così me lo compila.
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) .
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.