C/Lettura e scrittura su file: differenze tra le versioni
< C
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
|||
Riga 2: | Riga 2: | ||
{{Linguaggio C}} |
{{Linguaggio C}} |
||
In C, ogni periferica, file, o dispositivo di memorizzazione è considerato uno ''stream'': le funzioni per scrivere su qualunque dispositivo non cambiano. Per poter usufruire delle funzioni che permettono l'I/O su uno |
In C, ogni periferica, file, o dispositivo di memorizzazione è considerato uno {{IndexItem|stream}}''stream'': le funzioni per scrivere su qualunque dispositivo non cambiano. Per poter usufruire delle funzioni che permettono l'I/O su uno stream, è necessario includere la libreria standard {{IndexItem|stdio}}<tt>stdio</tt>. |
||
Le funzioni di I/O che analizzeremo saranno le seguenti: |
Le funzioni di I/O che analizzeremo saranno le seguenti: |
||
*<tt>fopen</tt> |
*{{IndexItem|fopen}}<tt>fopen</tt> |
||
*<tt>getc</tt> |
*{{IndexItem|getc}}<tt>getc</tt> |
||
*<tt>putc</tt> |
*{{IndexItem|putc}}<tt>putc</tt> |
||
*<tt>fgets</tt> |
*{{IndexItem|fgets}}<tt>fgets</tt> |
||
*<tt>fputs</tt> |
*{{IndexItem|fputs}}<tt>fputs</tt> |
||
*<tt>fprintf</tt> |
*{{IndexItem|fprintf}}<tt>fprintf</tt> |
||
*<tt>fscanf</tt> |
*{{IndexItem|fscanf}}<tt>fscanf</tt> |
||
*<tt>fclose</tt> |
*{{IndexItem|fclose}}<tt>fclose</tt> |
||
*<tt>fflush</tt> |
*{{IndexItem|fflush}}<tt>fflush</tt> |
||
*<tt>fseek</tt> |
*{{IndexItem|fseek}}<tt>fseek</tt> |
||
*<tt>rewind</tt> |
*{{IndexItem|rewind}}<tt>rewind</tt> |
||
== Apertura di un file == |
== Apertura di un file == |
||
Riga 21: | Riga 21: | ||
FILE* fopen (const char *nomefile, const char *modalità); |
FILE* fopen (const char *nomefile, const char *modalità); |
||
Il parametro <tt>nomefile</tt> rappresenta il path del file da aprire, mentre la <tt>modalità</tt> è una delle seguenti: |
Il parametro <tt>nomefile</tt> rappresenta il path del file da aprire, mentre la {{IndexItem|fopen, modalità}}<tt>modalità</tt> è una delle seguenti: |
||
{| {{prettytable}} |
{| {{prettytable}} |
Versione delle 13:09, 11 nov 2006
Template:Stub Template:Linguaggio C
In C, ogni periferica, file, o dispositivo di memorizzazione è considerato uno stream: le funzioni per scrivere su qualunque dispositivo non cambiano. Per poter usufruire delle funzioni che permettono l'I/O su uno stream, è necessario includere la libreria standard stdio.
Le funzioni di I/O che analizzeremo saranno le seguenti:
- fopen
- getc
- putc
- fgets
- fputs
- fprintf
- fscanf
- fclose
- fflush
- fseek
- rewind
Apertura di un file
La funzione fopen serve per aprire un file ed ha il seguente prototipo:
FILE* fopen (const char *nomefile, const char *modalità);
Il parametro nomefile rappresenta il path del file da aprire, mentre la modalità è una delle seguenti:
Modalità | Significato |
---|---|
r | Sola lettura. |
w | Se il file non esiste, lo crea e lo apre in sola scrittura. Se esiste, lo sovrascrive prima di aprirlo. |
r+ | Lettura e scrittura. |
w+ | Se il file, non esiste, lo crea e lo apre in lettura e scrittura. Se esiste, lo cancella e lo apre in lettura e scrittura. |
a | Apre il file in sola scrittura, facendo in modo che si possa solo aggiungerli del contenuto, alla fine. Se il file non esiste, viene creato. |
a+ | Come a, solo che è abilitata anche la lettura in un punto qualsiasi del file. |
t | Apre il file come testo. |
b | Apre il file come binario. |
#include <stdio.h> int main() { FILE *f = fopen("/Users/pietro/prova.txt", "r"); if(f != NULL) { printf("File letto con successo!"); } else { printf("Errore nel leggere il file!"); exit(1); } fclose(f); return 0; }
Lettura
Lettura di un file:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *f = fopen(argv[1], "r"); if(f == NULL) { printf("Errore nel leggere il file!\n"); exit(1); } char str[80]; fgets(str, 1000000, f); printf(str); fclose(f); return 0; }
Scrittura
Questo programma prende l'input dell'utente e lo scrive su un dato file (sovrascrivendolo), fino a che non si digita un punto.
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *f = fopen(argv[1], "w"); if(f == NULL) { printf("Errore nel leggere il file!\n"); exit(1); } char str[80]; while(strcmp(gets(str), ".")) { fputs(str, f); } fclose(f); return 0; }