INTRODUZIONE ALLA PROGRAMMAZIONE IN C



Lettura e scrittura su files



Le funzioni fprintf ed fscanf sono comunemente utilizzate per l'accesso ai files: int fprintf(FILE *stream, char *format, args ...) int fscanf(FILE *stream, char *format, args ...) Sono simili a printf e scanf, tranne per il fatto che i dati sono letti dalla stream, che deve essere aperta con fopen(). Ad esempio: char *string[80] FILE *fp; if ((fp=fopen("file.dat","r")) != NULL) fscanf(fp,"%s",string); Il puntatore alla stream viene incrementato automaticamente con tutte le funzioni di lettura/scrittura su file, quindi non e' necessario preoccuparsi di farlo manualmente. char *string[80]: FILE *stream, *fopen(); if ((stream=fopen(...)) != NULL) fscanf(stream,"%s",string); Altre funzioni di I/O da file sono: int getc(FILE *stream), int fgetc(FILE *stream) int putc(char ch, FILE *s), int fputc(char ch, FILE *s) Queste funzioni sono come getchar e putchar. "getc" e' definita come macro di preprocessore in stdio.h, "fgetc" e' una funzione di libreria C; con entrambe si ottiene lo stesso risultato. Esistono poi le funzioni: fflush(FILE *stream) - per fare la "flush" di una stream fclose(FILE *stream) - per fare la "close" di una stream Ad esempio: FILE *fp; if ( (fp=fopen("file.dat","r")) == NULL) { printf("Impossibile aprire file.dat\n"); exit(1); } ... fclose(fp); E' possibile accedere alle streams predefinite utilizzando fprintf, etc.: fprintf(stderr,"Cannot Compute!!n"); fscanf(stdin,"%s",string);