|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2010
Messaggi: 42
|
[C] Problemi con alcune "cose" (Lettura e scrittura di File esterni)
Salve a tutti, sto preparando l'esame di Laboratorio di Informatica e mi sono trovato dinanzi ad una bruttissima situazione
![]() Per l'esame dobbiamo portare degli esercizi svolti basandoci su dei modelli consegnatici dal professore e mi sono imbattuto in una serie di comandi che non mi sono molto chiari. Parte di questo esercizio prevedeva la lettura di una matrice pre-inserita nella cartella dove è situato il file .cpp per poi utilizzare quei valori per trovare il massimo, ho quindi questa funzione: void leggifile(FILE *in, mat a, int *x){ int i,j,max; int stato=1; in=fopen("matrice.txt","r"); max=0; if(in==NULL){ exit(1); } else{ while (stato!=EOF){ for(i=0;i<3;i++){ for(j=0;j<3;j++){ stato=fscanf(in,"%d ",&a[i][j]); if(a[i][j]>max){ max=a[i][j]; *x=i; } } } } fclose(in); } } In grassetto vi ho messo la parte che non comprendo, cosa indica in==NULL con exit(1) e stato!=EOF? Proprio non ci arrivo. Ho fatto varie supposizioni tipo: "NULL nel senso se casomai il file di testo è vuoto" o "EO7 se invece di numeri ho caratteri" ma il programma non si comporta di conseguenza se svuoto il file di testo o gli aggiungo dei caratteri. Potete aiutarmi? Vi ringrazio in anticipo! ![]() PS: Ho un altro problema, stavo provando a leggere una stringa qualsiasi e con il comando fscanf ho notato che non posso leggere da file di testo delle stringhe con degli spazi, per es. se nel txt ho "Mi piace la Nutella" il programma mi legge solo "Mi" e vede lo spazio come terminazione, questo so che un problema legato allo scanf e quindi si usa il fgets, ma c'è un comando simile allo fgets per la lettura da file? |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Nov 2010
Messaggi: 42
|
Ti ringrazio!
![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: May 2014
Messaggi: 1368
|
Quote:
char *fgets(char *s, int size, FILE *stream); quindi, come vedi, fgets legge da file e non hai bisogno di altre funzioni |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2007
Città: Corato (Bari)
Messaggi: 977
|
Guarda sono anche io al primo anno, ti consiglio di rendere il tuo codice strutturato se non vuoi fare una pessima figura (le istruzioni exit non devono essere contemplate), mettere dei nomi significativi alle variabili e negli if mettere prima la condizione vera e nell'else quella falsa, così non sputtani il predittore di salti (hai fatto architettura degli elaboratori?)
__________________
Trattative concluse con: Reiser Darkside, Rhapsodyan [ITA], ugofoscolo, teosc, Globex, Estero, lelesporting, gratta, m.linus, fuku, Danyit84 korra88 tuvok960, walter.caorle, Tecnomania01, BloodFlowers ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2014
Messaggi: 1368
|
Non sempre l'exit è da evitare. In questo caso, ad esempio, dopo aver cercato di aprire il file, se in è null evidentemente c'è un problema. Visto che senza i dati di quel file il programma non può essere eseguito, secondo me il comportamento corretto sarebbe proprio stampare un messaggio di errore e terminare l'esecuzione con la exit restituendo un codice che segnali l'anomalia
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:05.