Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file"

Transcript

1 File Input/Output 1

2 Sommario Manipolazione sequenziale di file in C Funzioni di base per I/O di file 2

3 Manipolazione di file I file devono essere aperti prima dell uso Associa un puntatore a file a ogni file Modi: read, write, o append Le funzioni di I/O usano il puntatore e non il nome del file Bisogna chiudere il file al termine dell uso Funzioni di base: fopen(), fclose(), fscanf(), fprintf() 3

4 Esempio di file I/O Scrivi un programma che: riceve in input una lista di nomi da un file chiamato names.lst conta il numero di nomi nella lista chiede un voto per ogni nome della lista produce come output il nome e il voto corrispondente nel file names_marks.dat 4

5 File I/O (Header) Passo 0: Includi stdio.h #include <stdio.h> int main()... return 0; 5

6 File I/O (File Pointer) Passo 1: Dichiara un puntatore a file (o file handler) come FILE * per ogni file int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL;... return 0; 6

7 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; 7

8 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; Nome del file inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; 8

9 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; Modo r : read w : write a : append inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; Attenzione: Il modo "w" sovrascrive il file, se esiste 9

10 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; Associa un puntatore ad ogni file da usare 10

11 File I/O (Error Check) Passo 3: Controlla se l apertura ha avuto successo int main() FILE *inputfile; inputfile = fopen( Names.txt, r ); if (inputfile == NULL) printf( Unable to open input file.\n ); return 1;... return 0; 11

12 File I/O (Error Check) Passo 3: Controlla se l apertura ha avuto successo. int main() FILE *inputfile; inputfile = fopen( Names.txt, r ); if (inputfile == NULL) printf( Unable to open input file.\n ); return 1; Il puntatore vale NULL se fopen() non ha aperto il file per qualche motivo... return 0; 12

13 File I/O (Error Check) Passo 3: Controlla se l apertura ha avuto successo int main() FILE *inputfile; inputfile = fopen( Names.txt, r ); if (inputfile == NULL) printf( Unable to open input file.\n ); return 1;... return 0; Termina il programma In caso d errore 13

14 File I/O (Input) Passo 4a: Usa fscanf() per l input #include <stdio.h> #define MAXLEN 100 int main() FILE *inputfile = NULL; char name[maxlen]; int count; listnames.c 14

15 File I/O (Input) Passo 4a: Usa fscanf() per l input /* Assumendo che "names.lst" contenga una lista di nomi, apri questo file in lettura. */ inputfile = fopen("names.lst", "r"); listnames.c if (inputfile == NULL) printf("error opening names file.\n"); return 1; 15

16 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); printf("\nnumber of names read: %d\n", count); return 0; 16

17 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); Vuole il puntatore a file, non il nome printf("\nnumber of names read: %d\n", count); return 0; 17

18 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); Gli altri parametri sono gli stessi della scanf() printf("\nnumber of names read: %d\n", count); return 0; 18

19 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); fscanf() restituisce il numero di item in input convertiti e assegnati con successo printf("\nnumber of names read: %d\n", count); return 0; 19

20 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); Controlla se è avvenuto un errore di lettura, di assegnamento o se e stata raggiunta l EOF del file di input printf("\nnumber of names read: %d\n", count); return 0; 20

21 File I/O (Output) Passo 4b: Usa fprintf() per l output #include <stdio.h> #define MAXLEN 100 listnames2.c int main() FILE *inputfile = NULL; FILE *outfile = NULL; char name[maxlen]; int count; float mark; /* Assumendo che "names.lst" contenga una lista di nomi, apri questo file in lettura. */ inputfile = fopen("names.lst", "r"); if (inputfile == NULL) printf("error opening names file.\n"); return 1; 21

22 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Il file di output "names_marks.dat conterra la lista dei nomi e dei voti corrispondenti. */ outfile = fopen("names_marks.dat", "w"); listnames2.c if (outfile == NULL) printf("error opening output file.\n"); return 1; 22

23 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); return 1; /*** etc ***/ listnames2.c 23

24 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); return 1; /*** etc ***/ Vuole il puntatore al file, non il nome listnames2.c 24

25 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); return 1; /*** etc ***/ Gli altri parametri sono gli stessi della printf() listnames2.c 25

26 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); return 1; /*** etc ***/ fprintf() restituisce il numero di caratteri scritti con successo, o un numero negativo in caso di errore listnames2.c 26

27 File I/O (Close) Passo 5: Chiudi ogni file con fclose() int main() /*** etc ***/ printf("\n"); printf("number of names read: %d\n", count); fclose(inputfile); fclose(outfile); return 0; 27

28 File I/O (Close) Passo 5: Chiudi ogni file con fclose() int main() /*** etc ***/ printf("\n"); printf("number of names read: %d\n", count); fclose(inputfile); fclose(outfile); return 0; Vuole il puntatore al file, non il nome 28

29 File I/O (Close) Passo 5: Chiudi un file con fclose() int main() /*** etc ***/ printf("\n"); printf("number of names read: %d\n", count); fclose(inputfile); fclose(outfile); return 0; Libera il buffer di input Svuota il buffer di output fclose() fallisce quando il file non è stato aperto correttamente 29

30 Note sui nomi di file Se non specificato altrimenti, il programma cercherà il file nella directory corrente Directory path nel nome del file: Windows sysfile = fopen( C:\\win\\system.ini, r ); Directory path nel nome del file: Unix passfile = fopen( /usr/etc/passwd, r ); 30

31 Note sui nomi di file Nome di file come variabile: FILE *outfile = NULL; char somename[max_name_len]; printf( Please enter output filename: ); scanf( %s, somename); outfile = fopen(somename, w ); 31

32 .. e come costante: Note sui nomi di file FILE *outfile = NULL; outfile = fopen( ThisName, w ); 32

33 File I/O e Stream Uno stream serve come canale per trasportare caratteri tra device di I/O e programmi Stream standard: stdin, stdout, stderr Un file handler/pointer serve come uno stream per/da un file Una volta che un item è letto da un input stream, la posizione nel file si muove automaticamente e l item successivo (se presente) diventa disponibile per la lettura ( accesso sequenziale") 33

34 Note su stringhe e fscanf() Lettura di una stringa: fscanf(stream, %s, string) Legge una sola parola" alla volta Le parole sono separate da uno spazio bianco: (space, tab, newline o loro combinazioni) Si muove alla parola successiva nello stream automaticamente dopo ogni lettura scanf( %s, string) Simile (l input stream è stdin) 34

35 Controllo per EOF Sia scanf() sia fscanf() restituiscono il numero di item in input convertiti e assegnati con successo il valore costante EOF se non viene letto alcun valore o quando si incontra la fine del file, quindi... Non raccomandabile! count = 0; while ( fscanf(inputfile, "%s", name)!= EOF ) count++; printf("%d. %s\n", count, name); 35

36 Controllo per EOF Attenzione! Usa EOF con cautela! Può causare problemi se gli specificatori di conversione non corrispondono al contenuto del file.. while ( fscanf(inpf, "%s %f", name, &mark)!= EOF ) printf("%s\t %f\n", name, mark); listmarks.c Esempio: inpf: Jake absent 36

37 Controllo per EOF.. infatti potrebbe leggere correttamente il primo ma non il secondo e quindi restituire 1 (non EOF) e quindi non segnalare l occorsa anomalia while ( fscanf(inpf, "%s %f", name, &mark)!= EOF ) printf("%s\t %f\n", name, mark); listmarks.c Esempio: inpf: Jake absent 37

38 Controllo per EOF Per controllare l end-of-file (o qualunque altro input error), controlla che il numero di item convertiti e assegnati con successo sia uguale al numero di item atteso while ( fscanf(inpf, "%s %f", name, &mark) == 2 ) printf("%s\t %f\n", name, mark); listmarks.c 38

39 Controllo per EOF Per controllare l end-of-file (o qualunque altro input error), controlla che il numero di item convertiti e assegnati con successo sia uguale al numero di item atteso if ( scanf("%d %d %d", &page, &row, &col)!= 3 ) printf( "I cannot go on without 3 integers :-( \n" ); exit(1); testscanf1.c 39

40 Controllo per EOF Per controllare l end-of-file (o qualunque altro input error), controlla che il numero di item convertiti e assegnati con successo La funzione exit() porta il programma a terminare immediatamente sia uguale al numero di item atteso if ( scanf("%d %d %d", &page, &row, &col)!= 3 ) printf( "I cannot go on without 3 integers :-( \n" ); exit(1); 40

41 Deitel & Deitel Capitolo 11: fino a 11.5 compreso Da sapere che esiste in alternativa all accesso sequenziale, l accesso diretto:

42 File Input/Output 10/08/06 1

43 08/10/06 Sommario Manipolazione sequenziale di file in C Funzioni di base per I/O di file 10/08/06 2

44 08/10/06 Manipolazione di file I file devono essere aperti prima dell uso Associa un puntatore a file a ogni file Modi: read, write, o append Le funzioni di I/O usano il puntatore e non il nome del file Bisogna chiudere il file al termine dell uso Funzioni di base: fopen(), fclose(), fscanf(), fprintf() 10/08/06 3

45 08/10/06 Esempio di file I/O Scrivi un programma che: riceve in input una lista di nomi da un file chiamato names.lst conta il numero di nomi nella lista chiede un voto per ogni nome della lista produce come output il nome e il voto corrispondente nel file names_marks.dat 10/08/06 4

46 08/10/06 File I/O (Header) Passo 0: Includi stdio.h #include <stdio.h> int main()... return 0; 10/08/06 5

47 08/10/06 File I/O (File Pointer) Passo 1: Dichiara un puntatore a file (o file handler) come FILE * per ogni file int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL;... return 0; 10/08/06 6

48 08/10/06 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; 10/08/06 7

49 08/10/06 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; Nome del file inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; 10/08/06 8

50 08/10/06 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; Modo r : read w : write a : append inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; Attenzione: Il modo "w" sovrascrive il file, se esiste 10/08/06 9

51 08/10/06 File I/O (Open) Passo 2: Apri i file usando fopen() int main() FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen( Names.txt, r ); outputfile = fopen( marks.dat, w ); currentfile = fopen( logfile.txt, a );... return 0; Associa un puntatore ad ogni file da usare 10/08/06 10

52 08/10/06 File I/O (Error Check) Passo 3: Controlla se l apertura ha avuto successo int main() FILE *inputfile; inputfile = fopen( Names.txt, r ); if (inputfile == NULL) printf( Unable to open input file.\n ); return 1;... return 0; 10/08/06 11

53 08/10/06 File I/O (Error Check) Passo 3: Controlla se l apertura ha avuto successo. int main() FILE *inputfile; inputfile = fopen( Names.txt, r ); if (inputfile == NULL) printf( Unable to open input file.\n ); return 1;... return 0; Il puntatore vale NULL se fopen() non ha aperto il file per qualche motivo 10/08/06 12

54 08/10/06 File I/O (Error Check) Passo 3: Controlla se l apertura ha avuto successo int main() FILE *inputfile; inputfile = fopen( Names.txt, r ); if (inputfile == NULL) printf( Unable to open input file.\n ); return 1;... return 0; Termina il programma In caso d errore 10/08/06 13

55 08/10/06 File I/O (Input) Passo 4a: Usa fscanf() per l input #include <stdio.h> #define MAXLEN 100 int main() FILE *inputfile = NULL; char name[maxlen]; int count; listnames.c 10/08/06 14

56 08/10/06 File I/O (Input) Passo 4a: Usa fscanf() per l input /* Assumendo che "names.lst" contenga una lista di nomi, apri questo file in lettura. */ listnames.c inputfile = fopen("names.lst", "r"); if (inputfile == NULL) printf("error opening names file.\n"); return 1; 10/08/06 15

57 08/10/06 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); printf("\nnumber of names read: %d\n", count); return 0; 10/08/06 16

58 08/10/06 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); Vuole il puntatore a file, non il nome printf("\nnumber of names read: %d\n", count); return 0; 10/08/06 17

59 08/10/06 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); Gli altri parametri sono gli stessi della scanf() printf("\nnumber of names read: %d\n", count); return 0; 10/08/06 18

60 08/10/06 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); fscanf() restituisce il numero di item in input convertiti e assegnati con successo printf("\nnumber of names read: %d\n", count); return 0; 10/08/06 19

61 08/10/06 File I/O (Input) Passo 4a: Usa fscanf() per l input listnames.c /* Leggi ogni nome e tieni il conto di quanti nomi ci sono nel file. */ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) count++; printf("%d. %s\n", count, name); Controlla se è avvenuto un errore di lettura, di assegnamento o se e stata raggiunta l EOF del file di input printf("\nnumber of names read: %d\n", count); return 0; 10/08/06 20

62 08/10/06 File I/O (Output) Passo 4b: Usa fprintf() per l output #include <stdio.h> #define MAXLEN 100 listnames2.c int main() FILE *inputfile = NULL; FILE *outfile = NULL; char name[maxlen]; int count; float mark; /* Assumendo che "names.lst" contenga una lista di nomi, apri questo file in lettura. */ inputfile = fopen("names.lst", "r"); if (inputfile == NULL) printf("error opening names file.\n"); return 1; 10/08/06 21

63 08/10/06 File I/O (Output) Passo 4b: Usa fprintf() per l output listnames2.c /* Il file di output "names_marks.dat conterra la lista dei nomi e dei voti corrispondenti. */ outfile = fopen("names_marks.dat", "w"); if (outfile == NULL) printf("error opening output file.\n"); return 1; 10/08/06 22

64 08/10/06 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); return 1; /*** etc ***/ listnames2.c 10/08/06 23

65 08/10/06 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); return 1; Vuole il puntatore al file, non il nome /*** 10/08/06 etc ***/ listnames2.c 24

66 08/10/06 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); Gli altri parametri return 1; sono gli stessi della /*** 10/08/06 etc ***/ 25 printf() listnames2.c

67 08/10/06 File I/O (Output) Passo 4b: Usa fprintf() per l output /* Leggi ogni nome, chiedi il voto e scrivi nome e voto nel file di output. Inoltre, conta quanti nomi ci sono in un file. */ fprintf() restituisce il numero di caratteri scritti con successo, o un numero negativo in caso di errore count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) count++; printf("enter mark for %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("error writing to output file.\n"); return 1; /*** 10/08/06 etc ***/ 26 listnames2.c

68 08/10/06 File I/O (Close) Passo 5: Chiudi ogni file con fclose() int main() /*** etc ***/ printf("\n"); printf("number of names read: %d\n", count); fclose(inputfile); fclose(outfile); return 0; 10/08/06 27

69 08/10/06 File I/O (Close) Passo 5: Chiudi ogni file con fclose() int main() /*** etc ***/ printf("\n"); printf("number of names read: %d\n", count); fclose(inputfile); fclose(outfile); return 0; Vuole il puntatore al file, non il nome 10/08/06 28

70 08/10/06 File I/O (Close) Passo 5: Chiudi un file con fclose() int main() /*** etc ***/ printf("\n"); printf("number of names read: %d\n", count); fclose(inputfile); fclose(outfile); return 0; Libera il buffer di input Svuota il buffer di output fclose() fallisce quando il file non è stato aperto correttamente 10/08/06 29

71 08/10/06 Note sui nomi di file Se non specificato altrimenti, il programma cercherà il file nella directory corrente Directory path nel nome del file: Windows sysfile = fopen( C:\\win\\system.ini, r ); Directory path nel nome del file: Unix passfile = fopen( /usr/etc/passwd, r ); 10/08/06 30

72 08/10/06 Note sui nomi di file Nome di file come variabile: FILE *outfile = NULL; char somename[max_name_len]; printf( Please enter output filename: ); scanf( %s, somename); outfile = fopen(somename, w ); 10/08/06 31

73 08/10/06 Note sui nomi di file.. e come costante: FILE *outfile = NULL; outfile = fopen( ThisName, w ); 10/08/06 32

74 08/10/06 File I/O e Stream Uno stream serve come canale per trasportare caratteri tra device di I/O e programmi Stream standard: stdin, stdout, stderr Un file handler/pointer serve come uno stream per/da un file Una volta che un item è letto da un input stream, la posizione nel file si muove automaticamente e l item successivo (se presente) diventa disponibile per la lettura ( accesso sequenziale") 10/08/06 33

75 08/10/06 Note su stringhe e fscanf() Lettura di una stringa: fscanf(stream, %s, string) Legge una sola parola" alla volta Le parole sono separate da uno spazio bianco: (space, tab, newline o loro combinazioni) Si muove alla parola successiva nello stream automaticamente dopo ogni lettura scanf( %s, string) 10/08/06 34 Simile (l input stream è stdin)

76 08/10/06 Controllo per EOF Sia scanf() sia fscanf() restituiscono il numero di item in input convertiti e assegnati con successo il valore costante EOF se non viene letto alcun valore o quando si incontra la fine del file, quindi... Non raccomandabile! count = 0; while ( fscanf(inputfile, "%s", name)!= EOF ) count++; printf("%d. %s\n", count, name); 10/08/06 35

77 08/10/06 Controllo per EOF Attenzione! Usa EOF con cautela! Può causare problemi se gli specificatori di conversione non corrispondono al contenuto del file.. while ( fscanf(inpf, "%s %f", name, &mark)!= EOF ) printf("%s\t %f\n", name, mark); listmarks.c Esempio: inpf: Jake absent 10/08/06 36

78 08/10/06 Controllo per EOF.. infatti potrebbe leggere correttamente il primo ma non il secondo e quindi restituire 1 (non EOF) e quindi non segnalare l occorsa anomalia while ( fscanf(inpf, "%s %f", name, &mark)!= EOF ) printf("%s\t %f\n", name, mark); listmarks.c Esempio: inpf: Jake absent 10/08/06 37

79 08/10/06 Controllo per EOF Per controllare l end-of-file (o qualunque altro input error), controlla che il numero di item convertiti e assegnati con successo sia uguale al numero di item atteso while ( fscanf(inpf, "%s %f", name, &mark) == 2 ) printf("%s\t %f\n", name, mark); listmarks.c 10/08/06 38

80 08/10/06 Controllo per EOF Per controllare l end-of-file (o qualunque altro input error), controlla che il numero di item convertiti e assegnati con successo sia uguale al numero di item atteso if ( scanf("%d %d %d", &page, &row, &col)!= 3 ) printf( "I cannot go on without 3 integers :-( \n" ); exit(1); 10/08/06 39 testscanf1.c

81 08/10/06 Controllo per EOF Per controllare l end-of-file (o qualunque altro input error), controlla che il numero di item convertiti e assegnati con successo La funzione exit() porta il programma a terminare immediatamente sia uguale al numero di item atteso if ( scanf("%d %d %d", &page, &row, &col)!= 3 ) printf( "I cannot go on without 3 integers :-( \n" ); exit(1); 10/08/06 40

82 08/10/06 Deitel & Deitel Capitolo 11: fino a 11.5 compreso Da sapere che esiste in alternativa all accesso sequenziale, l accesso diretto: /08/06 41

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti

Dettagli

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Input/Output di numeri

Input/Output di numeri Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include

Dettagli

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

Dettagli

Capitolo 11 Elaborazione di file

Capitolo 11 Elaborazione di file 1 Capitolo 11 Elaborazione di file 11.1 Introduzione 2 I file Possono essere creati, modificati, ed elaborati da programmi scritti in C Sono utilizzati per la memorizzazione permanente dei dati La memorizzazione

Dettagli

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa.

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un

Dettagli

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Input/Output Stream

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

file fisico file logico

file fisico file logico I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi

Dettagli

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Gestione dei File. dischi nastri cd

Gestione dei File. dischi nastri cd Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Input/output in C e in C++

Input/output in C e in C++ FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp.

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp. Introduzione L elaborazione dei files in C D.D. cap. 11+ pp. 569-572 K.P. pp. 581-583 La memorizzazione dei dati nelle variabili e nei vettori è temporanea: tutti quei dati andranno persi quando il programma

Dettagli

GESTIONE DEI FILE IN C

GESTIONE DEI FILE IN C GESTIONE DEI FILE IN C Il concetto di file.. è una parte logicamente contigua del contenuto di un dispositivo! Deve essere capace di memorizzare grandi quantità di dati! I dati memorizzati devono sopravvivere

Dettagli

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori Formattazione avanzata Modificatori di o in output Modificatori di o in input Stream predefiniti I/O Avanzato e File 2 Formattazione dell output Formattazione avanzata L output (su schermo o su file) viene

Dettagli

Un file è un astrazione di memorizzazione di dimensione potenzialmente illimitata (ma non infinita), ad accesso sequenziale.

Un file è un astrazione di memorizzazione di dimensione potenzialmente illimitata (ma non infinita), ad accesso sequenziale. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd

I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa. dischi nastri cd GESTIONE DEI FILE I file possono

Dettagli

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti Funzioni di I/O per numeri 2 Input e output di valori numerici Ver. 2.4.2 2012 - Claudio Fornaro - Corso di programmazione in C Per utilizzare le funzioni di Input/Output bisogna includere il file di intestazione

Dettagli

Esercizi. I File ed il C

Esercizi. I File ed il C Politecnico di Milano Esercizi File di testo,, file binari I File ed il C Insieme omogeneo di dati, memorizzato su disco e caratterizzato da un nome La lunghezza di un file non è fissata a priori Astrazione

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Introduzione al C. Stream e disk file

Introduzione al C. Stream e disk file Introduzione al C Stream e disk file Stream Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream:

Dettagli

Linguaggio C Gestione File

Linguaggio C Gestione File Gestione File: Il file è l'unità logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati non limitata dalle dimensioni della memoria centrale. Nel linguaggio

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

Se vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00

Se vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00 File position pointer File position pointer Indica la posizione da cui leggere/scrivere i prossimi byte Non un puntatore, ma un valore intero (specifica la posizione dall inizio file in termini di numero

Dettagli

Esercizi File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it

Dettagli

Linguaggio C: i file

Linguaggio C: i file Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

SmallShell Piccolo processore comandi

SmallShell Piccolo processore comandi SmallShell Piccolo processore comandi /* file smallsh.h */ #include #include #define EOL 1 #define ARG 2 #define AMPERSAND 3 #define SEMICOLON 4 #define RIDIRIN 5 #define RIDIROUT 6

Dettagli

Gestione dei file. File di testo e binari

Gestione dei file. File di testo e binari Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile

Dettagli

Sistemi Operativi Teledidattico

Sistemi Operativi Teledidattico Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione Introduzione a Funzioni di Ingresso e Uscita Compilazione 2 Come si termina...... un programma in esecuzione (processo)? Ctrl + C In UNIX ci si basa sul concetto di terminale Anche da GUI, quello che si

Dettagli

LP1 Lezione 13: i File in C. Maurizio Tucci

LP1 Lezione 13: i File in C. Maurizio Tucci LP1 Lezione 13: i File in C Maurizio Tucci mtucci@unisa.it 1 Il File: Dichiarazione Memorizzare dati in maniera non volatile In C (libreria ) è definito un tipo FILE che astrae il concetto di sequenza

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Struttura dati FILE. Concetto di FILE

Struttura dati FILE. Concetto di FILE Struttura dati FILE Concetto di FILE Per poter mantenere disponibili dei dati tra diverse esecuzioni di un programma (PERSISTENZA dei dati), è necessario poterli archiviare su memoria di massa. Un file

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

CAPITOLO2 PROGRAMMA: PRINTING UN GIOCO DI PAROLE FONDAMENTI DI C FORMA DI UN SEMPLICE PROGRAMMA COMPILAZIONE E LINKING. directive

CAPITOLO2 PROGRAMMA: PRINTING UN GIOCO DI PAROLE FONDAMENTI DI C FORMA DI UN SEMPLICE PROGRAMMA COMPILAZIONE E LINKING. directive PROGRAMMA: PRINTING UN GIOCO DI PAROLE CAPITOLO2 FONDAMENTI DI C printf( C, o non C: Questo è il problema.\n"); Scrivere questo programma e chiamarlo pun.c Usare l estensione.c per i programmi C. 1 2 COMPILAZIONE

Dettagli

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comunidi I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

Dettagli

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Gestione dei file. Linguaggio ANSI C Input/Output - 13 Gestione dei file Necessità di persistenza dei file archiviare i file su memoria di massa. Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni

Dettagli

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

Il File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Il File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Il File-System I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 File System Il file-system è uno degli aspetti più visibili di un sistema operativo

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Linguaggio C La libreria standard

Linguaggio C La libreria standard FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C La libreria standard 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII

Dettagli

Sulla libreria standard, III. Manipolare file con stdio.h

Sulla libreria standard, III. Manipolare file con stdio.h Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

I File. File. File di testo. Esempi di file di testo. Gestione di file in C. Gestione di file in C

I File. File. File di testo. Esempi di file di testo. Gestione di file in C. Gestione di file in C mylib.obj mylib.c #include mylib.h int leggi(int a[], int dim) { int i=0; while( scanf("%d", a+i) ) { i++; if( i>=dim ) break; return i; void scambia(int *a, int *b) { int t; t = *a; *a = *b; *b = t; mylib.h

Dettagli

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto alla volta Scrittura di un fputc Int fputc(int ch, FILE *flusso); carattere alla volta Lettura

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 13/03/07 Nota Questi lucidi sono tratti

Dettagli

Le funzioni, e le istruzioni di input/output

Le funzioni, e le istruzioni di input/output Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali

Dettagli

Espressione di chiamata di funzione

Espressione di chiamata di funzione Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è

Dettagli

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n').

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n'). I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Directory. Le directory unix sono file.

Directory. Le directory unix sono file. Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con

Dettagli

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T Suggerimenti, note utili ed errori comuni Fondamenti di informatica T printf, scanf e stringhe di formato La lettura e scrittura di variabili in formato testo sono realizzate tramite printf e scanf sfruttando

Dettagli

Gestione dei File C. Generalità

Gestione dei File C. Generalità Gestione dei File C 1 Generalità Il linguaggio C non contiene alcuna istruzione di Input/Output. Tali operazioni vengono svolte mediante chiamate a funzioni definite nella libreria standard contenute nel

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

$QDOLVLGHOSURJUDPPDTXDGUDWR

$QDOLVLGHOSURJUDPPDTXDGUDWR $QDOLVLGHOSURJUDPPDTXDGUDWR /* */ calcolare l area del quadrato #include main(){ int lato, area; printf("lato "); scanf("%d", &lato); if(lato < 0) printf("errore nei dati \n"); else { area =

Dettagli

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 04 Input/Output

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 04 Input/Output Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 04 Input/Output Input e output in C Input con formato: scanf( stringa formato, lista variabili); Output con formato:

Dettagli

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES Con conversione di formato: int scanf (const char *format,... ) /* ritorna il numero di argomenti assegnati con successo altrimenti EOF se fine

Dettagli

Struttura dati FILE. Motivazioni: memorie a confronto

Struttura dati FILE. Motivazioni: memorie a confronto Struttura dati FILE Motivazioni: memorie a confronto La memoria centrale (RAM) è tecnologia elettronica basata su Le memorie secondarie sono basate su tecnologie magnetiche (HD) o ottiche (CD, DVD) Conseguenze

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

caratteri, immagini, suoni, ecc.

caratteri, immagini, suoni, ecc. Il linguaggio C Input e output I flussi di I/O L uso di buffer Apertura e chiusura di file Lettura e scrittura di dati La selezione di un metodo di I/O I/O non bufferizzato L accesso diretto a file Input

Dettagli

FILE BINARI FILE BINARI

FILE BINARI FILE BINARI FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

STRINGHE: ARRAY DI CARATTERI! a p e \0

STRINGHE: ARRAY DI CARATTERI! a p e \0 STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più

Dettagli

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

Dettagli

È possibile definire vettori di qualunque tipo Possiamo, quindi, anche avere vettori di stringhe Ad esempio:

È possibile definire vettori di qualunque tipo Possiamo, quindi, anche avere vettori di stringhe Ad esempio: È possibile definire vettori di qualunque tipo Possiamo, quindi, anche avere vettori di stringhe Ad esempio: char * stringhe[4]; Se volessimo passare un array di stringhe ad un funzione/procedura dobbiamo

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- 1 Sommario Esercizi sulla gestione dei processi Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait 2 -

Dettagli

Esercitazione 3. Espressioni booleane I comandi if-else e while

Esercitazione 3. Espressioni booleane I comandi if-else e while Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if

Dettagli

FILE BINARI. I file di testo non sono indispensabili: sono semplicemente comodi 1

FILE BINARI. I file di testo non sono indispensabili: sono semplicemente comodi 1 FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012 Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni

Dettagli

Introduzione al C. Unità 8 Stringhe

Introduzione al C. Unità 8 Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, A. Pennisi, S. Peluso, S. Salza Sommario Unità 8 Array di

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015 VINCENZO MARRA Indice Parte 1. Input/Output standard dalla console 2 Esercizio 1 2 Eco

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Fondamenti di Informatica. Tecniche di input/output per l'accesso ai file

Fondamenti di Informatica. Tecniche di input/output per l'accesso ai file Corso di per il corso di Laurea di Ingegneria Meccanica Tecniche di input/output per l'accesso ai file Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1 L'importanza

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

Es 1. Scrivere un programma che verifica se una terna di numeri interi e' pitagorica

Es 1. Scrivere un programma che verifica se una terna di numeri interi e' pitagorica Es 1. Scrivere un programma che verifica se una terna di numeri interi e' pitagorica 1. Analisi del problema INPUT (variabili e tipo)? Tre numeri interi x,y,z:int OUTPUT? Si/No MA... Capire il problema:

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

GESTIONE DEI FILE IL CONCETTO DI FILE APERTURA E CHIUSURA DI UN FILE OPERARE SUI FILE

GESTIONE DEI FILE IL CONCETTO DI FILE APERTURA E CHIUSURA DI UN FILE OPERARE SUI FILE GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa Un file è una astrazione fornita

Dettagli

GESTIONE DEI FILE persistenza archiviare file astrazione fornita dal sistema operativo dimensione potenzialmente illimitata ad accesso sequenziale

GESTIONE DEI FILE persistenza archiviare file astrazione fornita dal sistema operativo dimensione potenzialmente illimitata ad accesso sequenziale GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa Un file è una astrazione fornita

Dettagli

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII Gestione dei files DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli

MAGAZZINO.CPP January 2, 2008 Page 1

MAGAZZINO.CPP January 2, 2008 Page 1 MAGAZZINO.CPP January 2, 2008 Page 1 1 #include 2 #include 3 #include 4 // ==================================================================== 5 // Versione 1.1 1/1/2008

Dettagli

Tipo carattere. Campo di variabilità. Intervallo finito. Tipo. Dimensione (byte) char

Tipo carattere. Campo di variabilità. Intervallo finito. Tipo. Dimensione (byte) char Tipo carattere Finora abbiamo lavorato con valori numerici. I numeri costituiscono molta parte del lavoro dei computer, ma non tutta. I computer sono macchine per il trattamento dell informazione e l informazione

Dettagli

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define Primo passo: il preprocessor Source code Preprocessor Pre-processed source code Compiler Libraries Linker Executable code 1 Il preprocessore Il preprocessore compie delle manipolazioni sul codice del programma.

Dettagli

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione Sequenze di cifre Esercizio 1 - cicli Realizzare un programma che prende in input una sequenza di cifre (tra 1 e 9) e calcola la somma massima fra le sotto- sequenze di cifre non decrescente Il programma

Dettagli

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

SOLUZIONE ESERCIZIO 1

SOLUZIONE ESERCIZIO 1 SOLUZIONE ESERCIZIO 1 Progettare un algoritmo che dati tre numeri (voti) a, b, c che possono assumere i valori interi da 18 a 30, calcoli la loro media. #include void main() { int a, b, c; float

Dettagli