[C] Lettura parole da file

Sant1
Salve a tutti, non me la cavo molto con la programmazione in C quindi mi vedo costretto a chiedere aiuto, sperando che qualcuno mi possa aiutare :)

Dunque ho questo programma che (teoricamente) misura la lunghezza di una stringa da file... non è scritto da me ma fornito dal professore:

#include

int main(){
FILE*f;
int i;
char stringa[100];


f= fopen("pippo.txt", "r");
if(f == NULL) {
printf("Non trovato\n");
} else{
fscanf(f, "%s", stringa);

//calcolo lunghezza
i=0;
do{
i=i+1;
} while(stringa != 0);
printf("lunghezza= %d\n", i);
printf("%s\n", stringa);
for(i=0; i<10; i++){
printf("%c\n", stringa);
}
}
}


Sto cercando di farmi aiutare da un amico ma questo nemmeno lui lo sa... a me servirebbe un programma che, dato un file .txt composto da varie parole separate ciascuna da uno spazio (le parole composte da soli caratteri alfabetici minuscoli), scriva sullo schermo una per riga ciascuna parola e la sua lunghezza (es. ciao 4).
Il problema è che il programma soprascritto funziona con un file contenente una singola parola e non so come modificarlo in modo che riconosca le varie parole separate dallo spazio.

Inoltre dato che in laboratorio usavamo il prompt dei comandi per eseguire i programmi ma nel mio PC questo metodo non funziona, c'è qualche applicazione che mi consigliate o qualche modo per farlo funzionare con il prompt dei comandi anche a casa?

Saluti.

Risposte
hamming_burst
Ciao,

mi pare che tu non hai un ciclo per ripetere più volte la funzione fscanf(). Basta che inserisci un iteratore con terminazione a EOF.

Summerwind78
Ciao

anche io sono leggermente arrugginito ma proverei a fare una cosa di questo tipo


#include <stdio.h>

int main()
{
FILE*f;
int i;
char stringa[100];
char buf[100];
unsigned char bufptr;


   f= fopen("pippo.txt", "r");
   if(f == NULL) 
   {
      printf("Non trovato\n");
   } 
   else
   {
      fscanf(f, "%s", stringa);

      //calcolo lunghezza
      i=0;

       for(i=0; stringa[i] != 0; i++)
       {
           bufptr = 0;
           if (stringa[i] != ' ')
               buf[bufptr++] = stringa[i] ;
           else
           {
               buf[bufptr] = 0;
               printf("Parola: %s; Lunghezza: %d\n", *buf, bufptr);
           }
       }
   }
     
}



npn ho un compilatore C a portata di mano quindi non posso provarla ma in linea di massima dovrebbe funzionare

se non funzionasse bene o avessi ancora dubbi dimmelo, mi cerco un compilatore, lo installo e ti correggo l'algoritmo

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.