Linguaggio c
non capisco questa linea
res=fgets(buf, 200, fd); /*legge le righe dal file fd e le chiama con la variabile res e buf ??*/
e perche si scrive exit(1); ?? e non exit(); o exit; ??
questo e il programma completo
/*
Lettura di un file riga per riga.
*/
#include
#include
int main()
{
FILE *fd;
char buf[200];
char *res;
/* apre il file */
fd=fopen("righe.txt", "r");
if( fd==NULL )
{
printf("ciao");
perror("Errore in apertura del file ciao \n");
exit(1);
}
/* legge e stampa ogni riga */
while(1)
{
res=fgets(buf, 200, fd); /*legge le righe dal file fd e le chiama con la variabile res e buf ??*/
if( res==NULL ) break;
printf("%s", buf);
}
/* chiude il file */
fclose(fd);
return 0;
}
------------------------
grazie per la pazzienza !
res=fgets(buf, 200, fd); /*legge le righe dal file fd e le chiama con la variabile res e buf ??*/
e perche si scrive exit(1); ?? e non exit(); o exit; ??
questo e il programma completo
/*
Lettura di un file riga per riga.
*/
#include
#include
int main()
{
FILE *fd;
char buf[200];
char *res;
/* apre il file */
fd=fopen("righe.txt", "r");
if( fd==NULL )
{
printf("ciao");
perror("Errore in apertura del file ciao \n");
exit(1);
}
/* legge e stampa ogni riga */
while(1)
{
res=fgets(buf, 200, fd); /*legge le righe dal file fd e le chiama con la variabile res e buf ??*/
if( res==NULL ) break;
printf("%s", buf);
}
/* chiude il file */
fclose(fd);
return 0;
}
------------------------
grazie per la pazzienza !
Risposte
ho notato che per fare la spiegazione di tante funzioni , molti siti scrivono in questo modo :
#include
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);
ecc...
non capisco perche all inizzio c'e int o char ?
perche le funzioni fgets ad esempio dichiarano al interno delle parentesi il nome da dare alla variabile ?
anche scanf dichiara tra le parentesi di nome della variabile che viene utilizzata .
ciao grazie
#include
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);
ecc...
non capisco perche all inizzio c'e int o char ?
perche le funzioni fgets ad esempio dichiarano al interno delle parentesi il nome da dare alla variabile ?
anche scanf dichiara tra le parentesi di nome della variabile che viene utilizzata .
ciao grazie
char *fgets(char *s, int size, FILE *stream);
memorizza nella stringa 's' una riga dal file puntato da 'fd' di lunghezza 'size'.
Se 'size' dovesse superare la lunghezza della riga, in 's' viene memorizzata l'intera riga.
scrivere
char *res; ... res = fegets( ......
res punta alla stringa memorizzata nella variabile s.
Se non viene letto nulla, perchè magari è finito il file, allora 'res' non punta a nulla e quindi vale 'NULL'.
La funzione exit, richiede un parametro che indica lo stato del programma quando viene terminato con tale funzione.
questo valore può essere 0 (per indicare status = SUCCESS), oppure 1 (per indicare status = FAILURE).
'exit(0)' oppure 'exit(EXIT_SUCCESS)' indica una fine esecuzione regolare regolare.
'exit(1)' oppure 'exit(EXIT_FAILURE)' indica una fine esecuzione dovuta ad un errore.
questo valore può essere 0 (per indicare status = SUCCESS), oppure 1 (per indicare status = FAILURE).
'exit(0)' oppure 'exit(EXIT_SUCCESS)' indica una fine esecuzione regolare regolare.
'exit(1)' oppure 'exit(EXIT_FAILURE)' indica una fine esecuzione dovuta ad un errore.
Personalmente preferisco non usare la funzione exit,
vedi se ti piace questa alternativa.
ATTENZIONE: Non l'ho compilato, quindi potrebbe contenere qualche errore!
vedi se ti piace questa alternativa.
ATTENZIONE: Non l'ho compilato, quindi potrebbe contenere qualche errore!
#include<stdlib.h> #include<stdio.h> #define ROW_SIZE 200 #define FILE_NAME "Righe.txt" int main() { FILE *fpSource; char sBuffer[SIZE]; if((fpSource = fopen(FILE_NAME, "r")) != NULL) { printf("Contenuto del file %s:\n", FILE_NAME); while((fgets(sBuffer, ROW_SIZE, fpSource)) != NULL) { printf("%s", sBuffer); } } else { perror("Errore in apertura del file. \n"); } fclose(fpSource); return 0; }
#include
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Contenuto del file %s:\n", FILE_NAME);
while((fgets(sBuffer, ROW_SIZE, fpSource)) != NULL)
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
/*
il programmino funziona correttamente ed e molto chiaro !
*/
-----------------------------------------------
praticamente
res=fgets(buf, 200, fd);
char res e char buf sono identici .
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);
praticamente per indicare le funzioni che hanno un dato in uscita ,
davanti alla funzione si scrive char o int a seconda del tipo di variabile ,
se non ci sono dati in uscita si scrive void .
? giusto ? e cosi ?
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Contenuto del file %s:\n", FILE_NAME);
while((fgets(sBuffer, ROW_SIZE, fpSource)) != NULL)
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
/*
il programmino funziona correttamente ed e molto chiaro !
*/
-----------------------------------------------
praticamente
res=fgets(buf, 200, fd);
char res e char buf sono identici .
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);
praticamente per indicare le funzioni che hanno un dato in uscita ,
davanti alla funzione si scrive char o int a seconda del tipo di variabile ,
se non ci sono dati in uscita si scrive void .
? giusto ? e cosi ?
"luca98":
praticamente per indicare le funzioni che hanno un dato in uscita ,
davanti alla funzione si scrive char o int a seconda del tipo di variabile ,
se non ci sono dati in uscita si scrive void .
? giusto ? e cosi ?
Giusto.