misterx
02-04-2012, 15:48
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:
char *p;
char *campo[10];
int r=0;
p = strtok(stringa, " ");
while (p != NULL)
{
campo[r++]=p;
p = strtok(NULL, " ");
}
Il risultato che ottengo letta la stringa di input è:
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
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:
char *p;
char *campo[10];
int r=0;
p = strtok(stringa, " ");
while (p != NULL)
{
campo[r++]=p;
p = strtok(NULL, " ");
}
Il risultato che ottengo letta la stringa di input è:
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