libri-javascript-python

In questa lezione parleremo di fprintf, cioè della funzione che permette di scrivere sui file in modo formattato dopo l’apertura dello stesso con fopen.

Quindi fprintf è molto simile alla funzione printf e opera sullo stream del file aperto con la funzione fopen.

La sintassi della funzione fprintf è la seguente:

int fprintf(FILE *fp, char *formato, [argomenti]…)

Dove FILE *fp è il puntatore a FILE ottenuto dalla precedente chiamata fopen, che ricordiamo serve ad aprire il file. Quindi la differenza con la funzione printf è proprio il primo argomento, rappresentato dal puntatore allo stream. Il significato degli altri argomenti passati alla funzione rimane dunque invariato.

Ma c’è un’altra ovvia differenza con la funzione printf ed è il valore di ritorno. Infatti fprintf restituisce un intero, cioè il numero di caratteri scritti nello stream.

In caso di insuccesso la funzione restituisce una costante intera EOF (end of file).


Esempio d’uso della funzione fprintf

Realizziamo quindi un programma che crea un file di testo di nome studenti.txt e salva il nome, il cognome e il voto di ciascun studente per ogni riga.

Quindi utilizziamo la funzione fopen per aprire il file di testo (t) in scrittura(w) e dopo con fprintf scriviamo nel file di testo i valori inseriti da tastiera per ogni riga (\n).

#include <stdio.h>
#include <stdlib.h>
#define N 5

int main() {
	FILE *fp;
	char cognome[20];
	char nome[20];
	int i, voto;
	
	if((fp=fopen("alunni.txt", "wt"))==NULL) {
		printf("Errore nell'apertura del file'");
		exit(1);
	}
	
	for(i=0;i<N;i++) {
		printf("Cognome: ");
		scanf("%s", cognome);
		printf("Nome: ");
		scanf("%s", nome);
		printf("Voto: ");
		scanf("%d", &voto);
		fflush(stdin);
		fprintf(fp,"%s %s %d\n", cognome, nome, voto);
	}
	fclose(fp);
	
return 0;
	
}

Nell’esempio ho utilizzato anche fflush(stdin) per svuotare il buffer dello stdin proveniente da tastiera.

Chiaramente questo è solo un esempio di utilizzo di fprintf per la scrittura su file, più avanti faremo tanti altre esempi.

Nella prossima lezione parleremo anche di fscanf, cioè della funzione che permette di leggere dai file in modo formattato.

Alcuni link utili

Indice argomenti linguaggio C

Somma elementi diagonale principale di una matrice

Come sommare due matrici

Sommare dei numeri di una matrice

Matrice trasposta

Ricerca elementi in una matrice

Array con numeri random

Quick sort in C

Insertion Sort in C