[C] Aprire un file e stampare N parole

m45511
Salve, ho questo esercizio di cui non riesco a trovare la soluzione:

Scrivere una funzione ed un che riceve come parametro un nome del file di testo e stampa i primi N vocaboli.
Il numero N è inserito dall'utente.

NON riesco a costruirmi l'iterazione che mi permette di leggere N PAROLE.

Con questa struttura:

fp=fopen(file, "r");

if(fp==NULL)
printf("impossibile aprire il file \n");
else{
while( !feof(fp) ){
fscanf( fp, "%s", string);
printf("%s", string);
}
}
fclose (fp);

Leggo le parole tutte attaccate.
Devo imporre un'iterazione ma non riesco a venirne a capo.
Grazie per l'attenzione.

Risposte
Branko1
fscanf ignora gli spazi vuoti, come puoi vedere tu stesso nelle specifiche dell'API. Prova ad aggiungere uno spazio prima di %s, così " %s".

apatriarca
Quando si usa %s gli spazi vengono già ignorati e non c'è alcun bisogno di inserire lo spazio prima. Quello dello spazio è un problema di %c. In questo caso il motivo per cui le stringhe vengono lette tutte attaccate è molto semplice: vengono lette separatamente ma scritte tutte attaccate in printf.. Se vuoi stamparle separate devi inserire uno spazio o un carattere di a capo dopo la stringa nella stringa di formato di printf. Per fare un ciclo che legge N parole puoi aggiungere un contatore e aggiungere una condizione al ciclo per cui va avanti solo finché il contatore è minore di N.

Branko1
Il risultato è lo stesso, l'importante è capire il meccanismo dietro la stringa di formattazione.

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