Ciao
scusa la risposta in notevole ritardo, ma ho scoperto da poco questo forum ed ho visto la timidezza da meno ancora. Spero che la risposta NON ti serva piu' :)
La cosa migliore da fare e' leggere il file riga per riga:
FILE *f;
f = fopen ("nome file", "rt"); // il flag t e' necessario solo su alcune piattaforme
if (f == NULL)
{
// Riporta un messaggio di errore
}
while (fgets(linea, MAX_LINE, f) != NULL)
{
// Qui puoi elaborare la tua linea
}
fclose (f);
Questo ciclo, quindi, leggera' linea per linea fino al raggiungimento dell'EOF. In tal caso uscira' e dovrai chiudere il file.
All'interno del ciclo, nella variabile linea ci sara' la riga letta.
Per riportarsi ad un caso semplice, potresti scrivere una piccola procedura che, data la stringa di partenza, ti ritorna la medesima privata degli spazi. Chiamiamola, anche se non appropriato, "trim"
// Nota - le stringhe devono essere allocate correttamente
void trim (char *in, char *out)
{
while (*in)
{
if (!isspace(*in))
*out++ = *in;
in++;
}
*out = '\0';
}
All'interno del tuo ciclo potrai quindi chiamare questa procedura, ottenendo di lavorare con stringhe private degli spazi.
A questo punto, puoi fare una piccola funzione che riporta l'indice del primo carattere diverso da un numero, o -1 se non trovato:
int getNotDigit (char *str)
{
int count = 0;
while (isdigit(*str++))
{
count++;
}
return (*str == '\0') ? -1 : count;
}
alla fine, stampi questo valore
ciao ciao
"Beati i giusti perche' saranno giustiziati"