PDA

Visualizza la versione completa : [C] Esercizio: Leggere testo e scrivere su file


Deleted
14-02-2011, 12:51
Salve,
sto cercando di risolvere questo esercizio


Implementare un programma in grado di:
1. Leggere da tastiera un testo e scriverlo su file
2. Visualizzare il contenuto del file carattere per carattere
3. Contare il numero di linee del file che iniziano con la lettera ‘a’

Ma non capisco come fare: potrei leggere il testo con la funzione gets() e metterlo in un array, però in questo modo il testo non potrebbe includere caratteri di newline (\n) per poi verificare nel passo 3 quali sono le linee.

Ho cercato nel forum e un altro utente ha cercato di risolvere il problema, ma la soluzione (http://forum.html.it/forum/showthread/t-1355492.html)propostagli non è il massimo perchè bisogna indicare ogni volta manualmente quando si va a capo inserendo un carattere "sentinella".
Non esiste un modo per farlo in automatico?

Deleted
14-02-2011, 16:52
Ho risolto parzialmente il primo punto come volevo io, ovvero senza dover segnalare ogni volta manualmente una nuova linea, ma non so come far terminare il ciclo per esempio all'inserimento di un valore sentinella:


#include<stdio.h>

void leggitesto(FILE *output);

int main()
{

FILE *output;

printf("Inserisci un testo e inserisci -1 quando hai finito:\n");
if((output=fopen("testo.txt","w"))==NULL)
printf("Impossibile leggere il file!");
else
leggitesto(output);
fclose(output);

system("pause");
return 0;
}

void leggitesto(FILE *output){
while(1){
fputc(getchar(),output);
}
}

YuYevon
14-02-2011, 18:15
Potresti fare una cosa del genere:



char line[LENGTH];
FILE *file_out;

...

while (fgets(line, LENGTH, stdin) != NULL) {
fputs(line, file_out);
}


con questo ciclo leggi il testo riga per riga e lo scrivi nel file. Per terminare la scrittura ti basta che la fgets() rilevi l'EOF che puoi ottenere con ctrl+z su Windows e ctrl+d su Linux.

Loading