-->
  • Home
    • WorldInformatic's history
  • Operative Systems
    • Mac
    • Windows
  • Some guide
  • Programming language
    • C
    • Java
    • HTML
  • Smartphone
    • Apple iOS
    • Android
  • Games
    • Smartphone Games
    • Web Games
    • PC e Console
  • News
    • Apple News
    • Android/Google News
  • Enjoy!
  • Contact us

C: corso completo

- Parte 01: Introduzione
- Parte 02: Fasi, variabili, operatori e software
- Parte 03: Tipi di dato, direttive e primo programma
- Parte 04: Tipi di formato, printf e scanf
- Parte 05: Istruzioni condizionali e di iterazione
- Parte 06: Funzioni e progetti su più file
- Parte 07: Puntatori e passaggio dei parametri
- Parte 08: Array, stringhe e strutture
- Parte 09: Gestione file: file di testo
- Parte 10: Gestione file: file binari
- Parte 11: Allocazione dinamica della memoria
- Parte 12: Creare ed utilizzare le liste nel C
- Parte 13: Algoritmi di ordinamento di array e strutture
- Parte 14: Esercizi sul linguaggio C

C: corso completo

26 febbraio 2013

Immagine
Ciao ragazzi, in questa decima parte del corso completo di C che si tiene su questo sito voglio parlarvi dei file binari, poichè nella parte precedente vi ho parlato dei file di testo.

Un file binario è una mera sequenza di byte, che può essere usato per archiviare sulla memoria di massa qualsiasi tipo di informazione, sia essa un'immagine, un file audio, un numero, ecc... Bisogna però ricordare che input e output avvengono sotto forma di una sequenza di byte, e che la fine del file è rilevata sempre in base all'esito delle operazioni di lettura, in quanto non esiste un EOF, perchè il file binario non è una sequenza di caratteri.


FWRITE()
Per poter scrivere su un file binario, si utilizza la funzione fwrite, così definita:
int fwrite(addr, int dim, int n, FILE *f);
In sostanza, la fwrite():
  • Scrive sul file n elementi, ognuno grande dim byte (quindi in totale scrive n*dim byte);
  • Gli elementi che verranno scritti li preleva partendo dall'indirizzo addr;
  • Restituisce il numero di elementi scritti.

Ecco un esempio di fwrite() usata per scrivere una semplice sequenza di numeri presente all'interno di un array:
Immagine

FREAD()
La funzione fread() serve invece per leggere dati da un file binario e la sua struttura è questa:
int fread(addr, int dim, int n, FILE *f);
In sostanza, la fread():
  • Legge da file n elementi, ognuno grande dim byte (per cui tenta di leggere n*dim byte);
  • Gli elementi da leggere vengono scritti in memoria a partire dall'indirizzo addr;
  • Restituisce il numero di elementi letti.

Per esempio, per controllare velocemente se l'esercizio di prima è andato a buon fine, si può integrare il codice in questo modo:
Immagine
PROGRAMMA PIU' CORPOSO
Proviamo ora a fare l'esercizio che nella scorsa lezione abbiamo fatto con i file di testo, ma utilizziamo questa volta i file binari.
Immagine
Le differenze col precedente programma dove abbiamo lavorato su file di testo, la si nota ovviamente durante l'utilizzo di fwrite e fread, che ora vi spiego: 
  • L'array di persone che ho creato comprende 5 record, ossia 5 persone che hanno ognuna un nome, un cognome, un'età e una data di nascita; perciò ho dovuto dire alla fwrite() di scrivermi 5 record, ognuno contenente tutti i dati che una persona può avere! E questa cosa la si specifica con sizeof(Persona);
  • Stesso discorso vale per quanto riguarda la fread(); infatti ho dovuto leggere 5 record ognuno contenente tutti i dati di una singola persona. 

Se quando lanciate questo programma usate i dati che uso io nell'immagine qui sotto, vi dovrebbe venire questo come risultato:
Immagine

Concludo questa lezione dicendo che paradossalmente (credetemi, non prendetemi per matto!) lavorare con i file binari è molto più semplice e rapido che lavorare con i file di testo, e infatti la differenza di codice nel momento di scrittura o lettura da file la potete benissimo notare confrontando questa lezione e quella precedente! Tuttavia il file di testo offre come vantaggio la possibilità di vedere cosa c'è scritto sul file, quindi permette una facile gestione degli errori.

Vi lascio qui da scaricare il codice dell'ultimo esercizio corposo:
programmacorposobinario.c
File Size: 2 kb
File Type: c
Download File

Se volete esercitarvi con degli esercizi, andate qui: Esercizi sui file. 

                                                                                                                              Pumo
Ciao a tutti,
Pumo Matteo


Tweet
    Condividi



comments powered by Disqus

Social
Aiutate a diffondere il sito, cliccando qui




Segui @WInformatic

Autore
Salve a tutti!
Mi chiamo Pumo Matteo.
Per saperne di più: Biografia


Categorie
  • -> Mac
  • -> Windows
  • -> Apple iOS
  • -> Android
  • -> Programmazione
  • -> Guide varie
  • -> Hardware
  • -> Games
  • -> News



Social Network

Follow us on Social Network:

Topics

Windows
Smartphone games

If you want, make a donation

TO CONTACT US, USING THE PAGE IN THE TOP

Author

Immagine
I'm Matteo Pumo. University of Bologna - Faculty of computer Engeneering.
- My Biography

Italian version of site


Site made by Pumo Matteo © Copyright 2013 - Bologna, Italy - All rights reserved - It's prohibit all reproduction form, partial or total, of materials.