La funzione fputs in C permette di scrivere in un file delle stringhe, precedentemente aperto con la funzione fopen.
La fputs ha la seguente sintasssi:
int fputs(char *stringa, FILE *fp)
Quindi la funzione invia una stringa e la memorizza nella locazione di memoria puntata da stringa. FILE *fp è il puntatore al file restituito dalla funzione fopen, così come nelle altre funzioni che abbiamo studiato finora.
La funzione ritorna zero se non si verificano errori, altrimenti ritorna un valore diverso da zero o la costante EOF.
Esempio di utilizzo di fputs in C
Facciamo dunque un semplice esempio che permette di aprire un file in lettura e copiare riga per riga il contenuto di questo file in uno nuovo.
Facciamo l’esempio richiedendo in input entrambi i file.
Inizializziamo a zero il contatore della riga, nr, per conoscere quante righe sono state copiate.
Chiediamo in input i nomi dei file e apriamo il file con la funzione fopen. Visualizziamo un messaggio di errore se ci sono problemi nell’apertura dei file.
Dopo utilizziamo un ciclo while con la funzione fgets, che come abbiamo spiegato nella lezione precedente, prende tre parametri: la stringa, il numero di caratteri e il puntatore al file. Finché non arriviamo a leggere tutte le stringhe presenti nel file in lettura, copiamo con la funzione fputs ciascuna stringa nel nuovo file aperto in scrittura.
Infine chiudiamo il file usando la funzione fclose e stampiamo il risultato ottenuto.
Ecco dunque il listato completo:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
int main()
{
FILE *fpin, *fpout;
char nome_in[FILENAME_MAX], nome_out[FILENAME_MAX], r[N];
int nr=0;
printf("Nome del file da copiare:");
gets(nome_in);
printf("Nome del nuovo file:");
gets(nome_out);
if ((fpin=fopen(nome_in,"rt"))==NULL) {
printf("Errore nell'apertura del file");
exit(1);
}
if ((fpout=fopen(nome_out,"wt"))==NULL) {
printf("Errore nell'apertura del file");
exit(1);
}
while(fgets(r,N,fpin) != NULL) {
nr++;
fputs(r, fpout);
}
fclose(fpin);
fclose(fpout);
printf("Totale righe copiate: %d\n", nr);
return 0;
}
A questo semplice esempio sulla funzione fputs in C seguiranno tanti altri esempi al fine di consolidarne l’uso.
Alcuni link utili
Allocazione dinamica della memoria con malloc
Esercitazione sulle struct in C
Realizzare un menù di scelta in C
Come sommare gli elementi della cornice esterna
Ricerca elementi in una matrice