Guida Linguaggio C: L'Output su File | |||||||
14 Gennaio 2008 | C |
![]() ![]() ![]() |
|
|
![]() |
Output su File
Le istruzioni per l'output da file sono le seguentiFunzione | Descrizione | |
---|---|---|
int | putc(int c, FILE *stream) | Scrive un carattere nello stream indicato. |
int | fputc(int c, FILE *stream) | Produce gli stessi effetti della putc. |
int | fputs(const char *s, FILE *stream); | Scrive una stringa sul file. |
int | fprintf(FILE *stream, const char *formato, ...) | Scrive una stringa sul file formattandola come indicato nella stringa di formattazione. |
size_t | fwrite (const void *ptr, size_t dim, size_t n, FILE *stream); | Scrive nel file n elementi ciascuno di dimensione pari a dim byte prelevandoli dall'area di memoria puntata da ptr. |
putc
La funzione putc scrive un carattere in uno stream. Scrive il carattere contenuto in c nello stream puntato da stream. Restituirà il carattere scritto se l'operazione di scrittura si è svolta correttamente, altrimenti restituirà EOF.#include <stdio.h>
int putc(int c, FILE *stream)
Esempio
#include <stdio.h>
#include <stdlib.h>
FILE *f;
char filename[60];
int c;
int main()
{
f = fopen(filename, "w");
if (f == NULL) printf("Errore nell'apertura del file");
else
{
printf("Inserire il Testo\n");
do
{
c = getchar();
putc(c, f);
} while (c != 32);
fclose(f);
}
return 0;
}
Si apre il file indicato in scrittura, quindi si leggono i dati inseriti da tastiera e li si scrive sul file. I dati inseriti non verranno scritti su file fino a quando non si premerà enter. I dati letti saranno inseriti fino a quando non si digiterà il carattere spazio (codice ascii 32).
fputc
La funzione fputc scrive un carattere su un file. Riceve un intero, lo converte in un unsigned char e lo scrive sul file. L'indicatore della posizione del file viene fatto avanzare di una posizione.Se la scrittura ha avuto successo restituisce il carattere scritto, altrimenti restituisce EOF.
#include <stdio.h>
int fputc(int character, FILE *stream);
Esempio
#include <stdio.h>
#include <stdlib.h>
FILE *f;
char filename[60];
int c;
int main()
{
f = fopen(filename, "w");
if (f == NULL) printf("Errore nell'apertura del file");
else
{
printf("Inserire il Testo\n");
do
{
c = getchar();
fputc(c, f);
} while (c != 32);
fclose(f);
}
return 0;
}
Si apre il file indicato in scrittura, quindi si leggono i dati inseriti da tastiera e li si scrive sul file. I dati inseriti non verranno scritti su file fino a quando non si premerà enter. I dati letti saranno inseriti fino a quando non si digiterà il carattere spazio (codice ascii 32).
fputs
La funzione fputs scrive la stringa puntata da str nel file. A differenza della puts non scrive il carattere newline alla fine della stringa.Se la scrittura ha avuto successo restituisce un numero non negativo, altrimenti restituisce EOF.
#include <stdio.h>
int fputs(const char *str, FILE *stream);
Esempio
#include <stdio.h>
#include <stdlib.h>
FILE *f;
char filename[60];
char buffer[100];
int main()
{
f = fopen(filename, "w");
if (f == NULL) printf("Errore nell'apertura del file");
else
{
printf("Inserire il Testo\n");
do
{
gets(buffer);
if (strstr(buffer, "fine") == NULL)
{
fputs(buffer, f);
putc('\n',f);
}
} while (strstr(buffer, "fine") == NULL);
fclose(f);
}
return 0;
}
Viene letta una sequenza di caratteri da tastiera che viene posta in un array di caratteri e quindi scritta sul file indicato tramite la fputs fino a quando non viene inserita la parola fine che non viene scritta nel file destinazione.
Da notare come, dopo la scrittura della stringa letta da tastiera, si è scritto sul file un carattere newline, dal momento che la fputs non aggiunge il carattere newline alla fine della stringa scritta.
fprintpf
La funzione fprintf scrive sul file la stringa formattandola come indicato nella stringa di formattazione. Se l'operazione di scrittura ha avuto successo restituisce il numero di caratteri scritti, altrimenti restituisce un valore negativo.Per quanto riguarda le specifiche di conversione vedere quanto scritto per la scanf e la printf.
#include <stdio.h>
int fprintf(FILE *stream, const char *format, ...);
Esempio
#include <stdio.h>
#include <stdlib.h>
FILE *f;
char filename[60];
char cognome[25], nome[25];
int eta, i;
int main()
{
f = fopen(filename, "w");
if (f == NULL) printf("Errore nell'apertura del file");
else
{
for(i = 0; i <= 2; i++)
{
puts("Inserire Nome, Cognome, Età");
scanf("%s %s %d",&nome, &cognome, &eta);
fprintf(f, "%s %s %d\n",nome, cognome, eta);
}
fclose(f);
}
return 0;
}
Vengono letti alcuni elementi (nome, cognome, età), da tastiera tramite la scanf quindi vengono scritti sul file tramite la fprintf.
fwrite
La funzione fwrite scrive nel file fino a n elementi, ciascuno di dimensione pari a dim byte, contenuti nell'area puntata da ptr. L'indicatore della posizione del file viene fatto avanzare di una quantità pari al numero di byte scritti, ovvero (dim * n) byte.Se l'operazione di scrittura ha avuto successo restituisce il numero di elementi scritti, altrimenti restituisce un numero inferiore.
#include <stdio.h>
size_t fwrite (const void *ptr, size_t dim, size_t n, FILE *stream);
Esempio
#include <stdio.h>
#include <stdlib.h>
const int num_elementi = 3;
struct dati
{
char cognome[25], nome[25];
int eta;
char sesso;
};
typedef struct dati dati;
FILE *f;
char filename[60];
size_t res;
int i;
dati datip[3];
int main()
{
printf("Inserire il nome del file\n");
gets(filename);
f = fopen(filename, "r");
if (f == NULL) printf("Errore nell'apertura del file");
else
{
for(i = 0; i <= num_elementi-1; i++)
{
puts("Inserire Nome, Cognome, Età, Sesso");
scanf("%s %s %d %c",&datip[i].nome, &datip[i].cognome, &datip[i].eta,
&datip[i].sesso);
}
fwrite(datip, sizeof(dati), num_elementi, f);
fclose(f);
}
int ch = getchar();
return 0;
}
Si scrivono nel file 3 blocchi di dati di sizeof(dati) byte di dimensione ciascuno prelevandoli da datip.
Ciascun blocco viene interpretato come una struttura di tipo dati.
Guida Linguaggio C
- Introduzione
- Direttive
- Costanti, Tipi, Variabili
- Operatori
- L'input
- L'Output
- Controlli
- Funzioni
- Array
- Puntatori
- Stringhe
- I File
- L'Input da File
- L'Output su File