Scrittura file (Esempio 1)

Concetti:

Funzioni di apertura, chiusura e scrittura su file.

Testo:
Dopo aver riempito un vettore di strutture (i cui elementi della struttura sono un vettore di caratteri contenente il nome di uno studente, una variabile di tipo unsigned int contenente la matricola dello studente ed una variabile di tipo float contenente la sua media):

Soluzione:

scrittura_file_1.c
/* Esempio di utilizzo delle funzioni di scrittura su file */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define LUN 50
#define N_STUD 2
 
/* Definizione di un nuovo tipo stud_t */
typedef struct stud{
  char nome[LUN+1];
  unsigned int matricola;
  float media;
}stud_t;
 
 
int main() {
  FILE *fp;
  stud_t studente[N_STUD];
  int i;
  char riga[LUN+1];
 
  /* Riempimento dei primi due record del vettore di tipo stud_t */
  strcpy(studente[0].nome, "Stefano");
  studente[0].matricola = 120000;
  studente[0].media = 25.5;
 
  strcpy(studente[1].nome, "Giulia");
  studente[1].matricola = 120001;
  studente[1].media = 28.5;
 
  /* Apertura file in scrittura */
  fp = fopen("out.txt", "w");
  if (fp == NULL){
    printf("Errore: impossibile aprire il file out.txt\n");
    exit(1);
  }
 
  /* Scrittura del file: primo metodo utilizzando la funzione fprintf */
  fprintf(fp, "Primo metodo di scrittura\n"); /* Consigliabile */
  for(i=0; i<N_STUD; i++){
    fprintf(fp, "%s %d %f\n", studente[i].nome, studente[i].matricola, studente[i].media);
  }
 
  /* Scrittura del file: secondo metodo utilizzando la funzione fputs */
  fputs("Secondo metodo di scrittura\n", fp);
  for(i=0; i<N_STUD; i++){
    sprintf(riga, "%s %d %f\n", studente[i].nome, studente[i].matricola, studente[i].media);
    fputs(riga, fp);
  }
 
    fclose(fp); /* Chiusura del file */
 
  return 0;
}