Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © 2003 - The McGraw-Hill Companies srl Archiviare.

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

Puntatori Linguaggio C.
INFORMATICA Altre Istruzioni di I/O
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Gestione dei file Ing. Simona Colucci.
LINGUAGGIO DI PROGRAMMAZIONE C
Uso avanzato di C.
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
PHP e i files Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Operazioni di I/O da console e da file in C standard
SC che operano su file (1)
Giuseppe Fabio Fortugno.
Anno accademico Input e Output in C. Anno accademico Sommario Input e outputInput e output I flussi di I/O I flussi di I/O Luso.
INFORMATICA I file.
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
FILE DATI 16 lunedi 26 luglio giovedi ore 9 Come sappiamo, un file dati è un gruppo di informazioni tra loro correlate, memorizzate in un dispositivo di.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 15 Maggio 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 9 Maggio 2012.
File.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Introduzione agli stream e alle classi
INFORMATICA I file. © Piero Demichelis 2 File Per rendere più uniforme possibile il comportamento dei programmi in relazione alla grande varietà dei dispositivi.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Esercizi C sui tipi definiti dall’utente
Esercizi di riepilogo sul linguaggio C: file, puntatori, liste
1 Gestione dei File Corso di Informatica A Vito Perrone.
File di testo, file binari
I File.
GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persi-stenza dei dati) è necessario poterli archi-viare.
File I record.
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
Creazione progetto in C++/DEV
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione X Ingresso/Uscita di Interi Programmazione di Calcolatori: Ingresso/Uscita 1.
Unità Didattica 3 Linguaggio C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Esercizi su File.
Gestione dei file di testo, matrici e struct
2000 Prentice Hall, Inc. All rights reserved. Capitolo 11 (Deitel) Lelaborazione dei file Sommario Introduzione La gerarchia dei dati 11.3.
Programmazione in linguaggio C
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 21 Maggio 2014.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Fabio Scotti – Università degli Studi – Laboratorio di programmazione per la sicurezza 1 Lezione 13 e 14 GESTIONE DEI FILE A) Nozioni sulla gestione dei.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 13 e 14 -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Fondamenti di Informatica L- A #include “mylib.h” int leggi(int a[], int dim) { int i=0; while( scanf("%d", a+i) ) { i++; if( i>=dim ) break; } return.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
11. Gestione dei file Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
11. Gestione dei file Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Files in C++ Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera)
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Esercizi su stringhe e file 15 Stringhe e file.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 6 Marzo 2016.
APPUNTI SUL LINGUAGGIO C Memoria secondaria: File
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl Archiviare e manipolare i dati su memoria persistente Aprire, chiudere, leggere, scrivere e posizionarsi all’interno degli archivi Lavorare con strutture e file Gestione di un’anagrafica su memoria di massa Approfondire gli aspetti legati a standard input e standard output Capitolo 14 File Obiettivi didattici

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.1 Apertura e chiusura di file I file C sono sequenze lineari di byte. #include … FILE*fp; fp = fopen("ordini", "r"); … associa la variabile puntatore fp, il file pointer, al file di nome ordini. In caso di errore, per esempio se il file non esiste, ritorna NULL. fclose(fp); La chiusura garantisce che tutti i dati scritti nel file ordini siano salvati su disco.

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.1 Apertura e chiusura di file L’apertura specifica il tipo di operazione che si desidera eseguire "r" sola lettura  se il file non esiste ritorna NULL. "w" sola scrittura  se il file non esiste è creato, in caso contrario il contenuto del file preesistente sarà perso. "r+" lettura e scrittura  se il file non esiste ritorna NULL. "w+" scrittura e lettura  se il file non esiste è creato, in caso contrario il contenuto del file preesistente verrà perso. "a" append  è possibile eseguire soltanto operazioni di scrittura a fine (in coda al) file, se il file non esiste è creato. "a+" lettura e append se il file non esiste è creato, in caso contrario il contenuto del file preesistente verrà mantenuto.

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.2 Lettura e scrittura su file int elementi, dimensione; char buf[100]; FILE *fp; int n; … elementi = 100; dimensione = 1; … n = fread(buf, dimensione, elementi, fp); fread legge 100 caratteri dal file fp e li trasferisce nel vettore buf. buf vettore dimensione dimensione di un elemento del vettore elementi numero di elementi del vettore fp file da leggere n numero elementi letti, 0 fine file, negativo errore La lettura è sequenziale dopo l’apertura in lettura il puntatore è all’inizio del file; a ogni fread il puntatore si sposta del numero di byte letti.

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl #include main() { char buf[100]; /* buffer per la lettura */ FILE *fp; /* file pointer */ long nc; /* contatore caratteri */ int n; /* numero caratteri letti con fread() */ int fineFile =0; /* indica la fine lettura del file */ fp = fopen("clienti", "r"); /* apertura del file clienti */ if( fp == NULL ) /* errore: il file non esiste */ printf("Errore : il file ordini non esiste\n"); else { nc = 0L; /* inizializza il contatore */ do { /* ciclo di lettura */ n = fread(buf, 1, 100, fp); /*Legge 100 carat. da ordini*/ if(n==0) fineFile = 1; /* controllo di fine file */ nc += n; /* incremento del contatore */ } while(fineFile==0); fclose(fp); /* chiusura del file clienti */ printf("Il file clienti contiene %ld caratteri\n", nc); }} Listato 14.1 Conteggio del numero di caratteri nel file clienti 14.2 Lettura e scrittura su file

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.2 Lettura e scrittura su file int elementi, dimensione; char buf[100]; FILE *fp; int n;... elementi = 100; dimensione = 1; n = fwrite(buf, dimensione, elementi, fp); fwrite scrive 100 caratteri del vettore buf nel file fp. buf vettore dimensione dimensione di un elemento del vettore elementi numero di elementi del vettore fp file da scrivere n numero di elementi memorizzati (negativo errore) fwrite è analoga a fread

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl #include #include main() { char buf[100]; /* buffer */ FILE *fp; /* file pointer */ int len; /* Legge da tastiera il nome del fornit.*/ printf("Inserisci un fornitore : "); scanf("%s",buf); len = strlen(buf); fp = fopen("fornitori", "w"); /* crea il file fornit.*/ /* Memorizza il nome del fornitore nel file */ fwrite(buf, 1, len, fp); fclose(fp); /* chiude il file */ } Listato 14.2 Acquisisce una stringa da tastiera e la scrive in un file 14.2 Lettura e scrittura su file

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.3 Posizionamento del puntatore fseek muove il puntatore di lettura/scrittura in una qualunque posiz. del file. int err, mode; FILE *fp; long n; mode = 0; n = 100L; err = fseek(fp, n, mode); in cui il file pointer fp è posizionato sul centesimo byte. Parametri fp file pointer; n di quanti byte il file pointer deve essere spostato; se negativo deve essere spostato indietro invece che in avanti; mode a partire da quale posizione muovere il file pointer? Se 0 dall’inizio, se 1 è dalla posizione corrente, se 2 dalla fine del file. errse negativo errore.

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.3 Posizionamento del puntatore ftell restituisce la posizione corrente del file pointer FILE *fp; long n; … n = ftell(fp); n se negativo errore Il Listato 14.4 riporta un esempio di uso di fseek e ftell. Il programma deve essere lanciato dalla riga di comando (vedremo più avanti come lavorare con argc e argv) seguito da un nome di file. Esempio conta.exe nomeFile conta.exe file in cui è contenuto il programma eseguibile nomeFile file da filtrare in

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl #include main(int argc, char **argv) { FILE *fp; long n; if(argc < 2) printf("File non specificato\n"); else { fp = fopen(argv[1], "r"); /* apertura del file */ if( fp != NULL ) { /* il file esiste? */ fseek(fp,0L,2); /* puntatore alla fine del file*/ n = ftell(fp); /* lettura posiz. del puntat. */ fclose(fp); /* chiusura del file */ printf("Dimensione del file %ld\n", n); } else printf("Errore : il file %s non esiste\n",argv[1]); } } Listato 14.4 Visualizzazione della dimensione di un file con fseek e ftell 14.3 Posizionamento del puntatore

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.4 Lettura e scrittura formattata fprintf scrive sui file in modo formattato fscanf legge da file in modo formattato FILE *fp; int i;... i = 2; fprintf(fp, "Il valore di i e' %d\n", i); fp file sul quale scrivere; lo stesso per fscanf : FILE *fp; int i;... fscanf(fp,"%d", &i);

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.4 Lettura e scrittura formattata fgets e fputs leggono e scrivono una riga da/su file (sequenza di caratteri terminata da newline \n ) char buf[100]; FILE *fp; char *s; int n;... n = 100; s = fgets(buf, n, fp); buf vettore in cui è trasferita la riga letta da fp, n dimensione del vettore buf ; s puntatore a carattere: l’indirizzo di buf, NULL errore o fine file Aggiunge a fine riga il carattere di fine stringa “ \0 ”. char buf[100]; FILE *fp;... fputs(buf,fp); buf è il vettore che contiene la riga da scrivere sul file fp terminata con il carattere di fine stringa “ \0 ”.

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl #include main(int argc, char **argv) {char buf[100]; int linee; FILE *fp; if( argc < 2 ) printf("Errato numero di parametri\n"); else { fp = fopen(argv[1], "r"); /* apre il file */ if(fp!= NULL) { /* il file esiste? */ linee = 0; /* inizial. contatore di linea */ for(;;) { /* ciclo di lettura da file */ if(fgets(buf,100,fp)== NULL) break;/* fine file */ linee++; /* incrementa contatore linee */ } fclose(fp); /* chiude il file */ printf("Il file contiene %d linee\n", linee); } else printf("Il file %s non esiste\n",argv[1]); }} Listato 14.5 Conta il numero di righe di un file 14.4 Lettura e scrittura formattata

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.4 Lettura e scrittura formattata fgetc e fputc leggono e scrivono un carattere. FILE *fp; int c;... c = fgetc(fp); c carattere letto ( int ), se EOF fine file FILE *fp; int c;... c = 'A'; fputc(c,fp); c carattere scritto Per sapere se il file pointer è a fine file: feof, la cui modalità d’uso è: int ret; FILE *fp;... ret = feof(fp); ret 1 se fine file, 0 in caso contrario fflush(fp) scarica il contenuto del buffer associato a fp setbuf (fp, NULL) disabilita la bufferizzazione su fp

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl #include #include #define DIM 31 #define MENU 0 #define INS 1 #define CAN 2 #define RIC 3 #define VIS 4 #define OUT 100 struct per { /* Semplice struttura che modella una persona */ char cognome[DIM]; char nome[DIM]; char ind[DIM]; int eta; }; FILE *fp; /* Puntatore al file */ struct per anag; /* Variabile di appoggio anag per operaz. su file */ int menPer(void); void insPer(void); void ricPer(void); void canPer(void); long cerPer(char *, char *, int); void eliPer(long pos); void visPer(void); void visAnagrafe(void); L istato 14.7 Gestione anagrafica su file (vedi anche paragrafo 13.5) continua… 14.5 Gestione anagrafica

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl …segue void main(){ /* Presenta il menu e lancia la funzione scelta */ int scelta = MENU; while(scelta!=OUT) { switch(scelta) { case MENU: scelta = menPer(); if(scelta == MENU) scelta = OUT; break; case INS: insPer(); scelta = MENU; break; case CAN: canPer(); scelta = MENU; break; case RIC: ricPer(); scelta = MENU; break; case VIS: visAnagrafe(); scelta = MENU; break; }}} L istato 14.7 Gestione anagrafica su file continua… 13.5 Gestione anagrafica

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl …segue /* Visualizza il menu, accetta la scelta utente e la restituisce */ int menPer(void) { int scelta; char invio; int vero = 1; while(vero){ printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\t\t\t ANAGRAFE"); printf("\n\n\n\t\t\t 1. Immissione Persona"); printf("\n\n\t\t\t 2. Cancellazione Persona"); printf("\n\n\t\t\t 3. Ricerca Persona"); printf("\n\n\t\t\t 4. Visualizza anagrafe"); printf("\n\n\t\t\t 0. Fine"); printf("\n\n\n\t\t\t\t Scegliere una opzione: "); scanf("%d", &scelta); scanf("%c", &invio); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); switch(scelta) { case 0: case 1: case 2: case 3: case 4: return(scelta); default: break; } } return(0); } L istato 14.7 Gestione anagrafica su file continua… 13.5 Gestione anagrafica

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl …segue /* inserisce persona nel file anag.dat */ void insPer(void) { char invio; /* Se il file non esiste lo crea, i dati sono appesi in fondo */ fp = fopen("anag.dat","a+"); printf("\n\t\tINSERIMENTO PERSONA"); printf("\n\t\t \n\n"); printf("\nCognome : "); gets(anag.cognome); printf("\nNome : "); gets(anag.nome); printf("\nIndirizzo : "); gets(anag.ind); printf("\nEta' : "); scanf("%d", &anag.eta); scanf("%c", &invio); fwrite(&anag, sizeof(struct per), 1, fp); fclose(fp); } L istato 14.7 Gestione anagrafica su file continua… 13.5 Gestione anagrafica

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl …segue /* Cancella persona dall'anagrafe */ void canPer(void){ char pausa; char cognome[DIM], nome[DIM]; int eta; long pos; printf("\n\t\tCANCELLA PERSONA"); printf("\n\t\t------\n\n"); printf("\nCognome : "); gets(cognome); printf("\nNome : "); gets(nome); printf("\nEta' : "); scanf("%d", &eta); scanf("%c", &pausa); pos = cerPer(cognome, nome, eta); /* Invoca ricerca persona */ if(pos == -1) { printf("\nPersona non presente in anagrafe"); scanf("%c", &pausa); return; } visPer(); /* Invoca visualizza persona */ printf("\nConfermi cancellazione ? (S/N) "); scanf("%c", &pausa); if(pausa=='S' || pausa=='s') {eliPer(pos); return;} } L istato 14.7 Gestione anagrafica su file continua… 13.5 Gestione anagrafica

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl …segue void eliPer(long pos){ /* Elimina persona dall'anagrafe */ strcpy(anag.cognome, ""); strcpy(anag.nome, ""); strcpy(anag.ind, ""); anag.eta = 0; fp = fopen("anag.dat","r+"); fseek(fp,pos,0); fwrite(&anag, sizeof(struct per), 1, fp); fclose(fp); } void ricPer(void){ /* Ricerca persona */ char pausa; char cognome[DIM], nome[DIM]; int eta; long pos; printf("\n\t\tRICERCA PERSONA"); /* Inser. dati persona da ricerc. */ printf("\n\t\t------\n\n"); printf("\nCognome : "); gets(cognome); printf("\nNome : "); gets(nome); printf("\nEta' : "); scanf("%d", &eta); scanf("%c", &pausa); pos = cerPer(cognome, nome, eta); /*Invoca la funz. di scans. Seq.*/ if(pos == -1) { printf("\nPersona non presente in anagrafe"); scanf("%c", &pausa); return; } visPer(); scanf("%c", &pausa); } L istato 14.7 Gestione anagrafica su file continua… 13.5 Gestione anagrafica

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl …segue long cerPer(char *cg, char *nm, int et) {/* Scans. Seq. file anag.dat*/ int n; long pos = 0L; /* per ricercare una persona*/ fp = fopen("anag.dat", "r"); for(;;) { n = fread(&anag, sizeof(struct per), 1, fp); if(n==0) {fclose(fp); pos = -1; return (pos);} else if(strcmp(cg, anag.cognome) == 0) if(strcmp(nm, anag.nome) == 0) if(et == anag.eta) {pos = ftell(fp); fclose(fp); return(pos-sizeof(struct per));} }} void visPer(void) { /* Visualizza persona */ printf("\n\n \n"); printf("\n\t\tCognome : %s", anag.cognome); printf("\n\t\tNome : %s", anag.nome); printf("\n\t\tIndirizzo : %s", anag.ind); printf("\n\t\tEta' : %d", anag.eta); printf("\n\n \n"); } void visAnagrafe(void) { /* Visualizza l'anagrafe completa */ int n; char pausa; fp = fopen("anag.dat", "r"); do { n = fread(&anag, sizeof(struct per), 1, fp); if(n==0) fclose(fp); else {visPer(); scanf("%c", &pausa);} } while(n!=0); } L istato 14.7 Gestione anagrafica su file FINE 13.5 Gestione anagrafica

Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl 14.6 Standard input e standard output Standard Input ( stdin ), Standard Output ( stdout ) e Standard Error ( stderr ). stdin tastiera, stdout e stderr video. fprintf(stdout,"Ecco\n"); // output a video equivalenze printf(...) fprintf(stdout,...) scanf(...) fscanf(stdin,...) getchar() fgetc(stdin) putchar(c) fputc(c, stdout) eof() feof(stdin) gets legge una riga da tastiera ma elimina il carattere di newline e puts scrive una riga a video aggiungendo automaticamente un carattere di newline. Dunque gets(buf,n) non equivale a fgets(buf, n, stdin) puts(buf) non equivale a fputs(buf, stdout)