|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
[C] dvidere una stringa
ciao,
premetto che per suddividere le stringhe che ho in ingresso uso la funzione token() dello standard C. In ingresso mi arrivano stringhe per le quali devo considerare 4 campi principali: data orario dimensioni nomefile Per quanto riguarda i primi 3 campi non vi sono problemi in quanto sono dati gestiti dal sistema il quale no inserisce spazi tra i vari caratteri. Il campo nomefile invece è costituito da ogni sorta di carattere, spazi compresi. In questo caso ho risolto semplicemente dichiarando una matrice di puntatori nel modo seguente: Codice:
char *p;
char *campo[10];
int r=0;
p = strtok(stringa, " ");
while (p != NULL)
{
campo[r++]=p;
p = strtok(NULL, " ");
}
campo[0] = 10/02/2010 campo[2] = 12.30 campo[3] = 12.715 campo[4] = parte del nome del file campo[5] = parte del nome del file campo[6] = parte del nome del file etc ...... Siccome il nome del file mi interessa avero in un solo campo, il campo[4] con un ciclo for concateno al campo[4] il campo[6],....6,....7,....n Il problema è che non mi sembra un sistema molto furbo anche se funziona; c'è un modo usando i puntatori di copiare nel campo[4] la rimanenza della stringa tralasciando ciò che è già stato inserito nei precedenti 3 campi? grazie Ultima modifica di misterx : 02-04-2012 alle 16:32. |
|
|
|
|
|
#2 | |
|
Member
Iscritto dal: May 2009
Messaggi: 186
|
Quote:
Non usare la strtok. Scorri i caratteri della stringa con un semplice for. Se incontri uno spazio, al carattere successivo inizierà un campo (lo spazio forzalo al terminatore nullo così ti sistema il campo precedente). Questo per i primi 3 campi. Quando sai l'inizio del quarto campo (il nome del file in questo caso) puoi uscire dal ciclo. Se stai usando C e non C++, usa [C] nel titolo. |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
Quote:
|
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: May 2009
Messaggi: 186
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
grazie per le dritte.
Ho trovato un sistema ancora più banale |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:52.




















