Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file
|
|
- Arrigo Gori
- 6 anni fa
- Visualizzazioni
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 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
DettagliScrittura 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
DettagliOTTAVA 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
DettagliInput/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
DettagliGestione 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
DettagliCapitolo 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
DettagliI 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
DettagliIntroduzione 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
DettagliLe 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
Dettaglifile 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
DettagliL 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,
DettagliFondamenti 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.
DettagliGestione 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
DettagliLIBRERIE 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
DettagliInput/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
DettagliInput/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
DettagliIntroduzione. 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
DettagliGESTIONE 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
DettagliFormattazione 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
DettagliUn 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
DettagliI 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
DettagliFunzioni 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
DettagliEsercizi. 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
DettagliStringhe 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
DettagliIntroduzione 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:
DettagliLinguaggio 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
DettagliIntroduzione 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
DettagliSe 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
DettagliEsercizi 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
DettagliLinguaggio 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
DettagliSmallShell 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
DettagliGestione 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
DettagliSistemi 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 delle variabili a cui possono essere assegnati gli indirizzi
DettagliIntroduzione 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
DettagliLP1 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
DettagliI 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
DettagliStruttura 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
DettagliLe 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
DettagliRealizzare 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
DettagliIL 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
DettagliCaratteri 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
DettagliPolitecnico 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
DettagliCAPITOLO2 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
DettagliLibrerie 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
DettagliGestione 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
DettagliUna 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
DettagliIl 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
DettagliGestione 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
DettagliLinguaggio 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
DettagliLaboratorio 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
DettagliSulla 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,
DettagliIL 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
DettagliI 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
DettagliFILE: 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
DettagliLaboratorio 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
DettagliLe 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
DettagliEspressione 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 è
DettagliSono 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
Dettaglipuntatori 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
DettagliDirectory. 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
DettagliSuggerimenti, 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
DettagliGestione 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
DettagliSistemi 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
DettagliEsercitazione 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 /* */ 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 =
DettagliPrecedenza 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 >
DettagliFondamenti 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:
DettagliSOMMARIO 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
DettagliStruttura 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
DettagliLinguaggio 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
Dettaglicaratteri, 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
DettagliFILE 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
DettagliSTRINGHE: 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ù
DettagliCapitolo 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: char * stringhe[4]; Se volessimo passare un array di stringhe ad un funzione/procedura dobbiamo
DettagliLab. 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 -
DettagliEsercitazione 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
DettagliFILE 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
DettagliFunzioni 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
DettagliIntroduzione 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
DettagliERRATA 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
DettagliUn 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
DettagliLABORATORIO 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
DettagliGestione 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)
DettagliFondamenti 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
DettagliLinguaggio 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
DettagliEs 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:
Dettagligiapresente( ) 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
DettagliGESTIONE 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
DettagliGESTIONE 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
DettagliDOTT. 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/
DettagliMAGAZZINO.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
DettagliTipo 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
DettagliPrimo 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.
DettagliStruttura 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
DettagliEsercizio 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
DettagliStringhe 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
DettagliSOLUZIONE 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