La gestió d'arxius és una part fonamental de la programació en C, ja que permet als programes llegir i escriure dades en arxius emmagatzemats en el sistema de fitxers. Això és essencial per a moltes aplicacions, com ara bases de dades, processadors de text, i qualsevol aplicació que necessiti emmagatzemar informació de manera persistent.
Conceptes Clau
- Tipus d'Arxius
- Arxius de text: Contenen dades en format de text llegible per humans. Cada línia d'un arxiu de text acaba amb un caràcter de nova línia (
\n
). - Arxius binaris: Contenen dades en format binari, que no són directament llegibles per humans. Són més eficients per emmagatzemar dades complexes com estructures i imatges.
- Operacions Bàsiques
- Obrir un arxiu: Abans de llegir o escriure en un arxiu, cal obrir-lo utilitzant la funció
fopen()
. - Tancar un arxiu: Després de completar les operacions amb un arxiu, cal tancar-lo amb la funció
fclose()
. - Llegir d'un arxiu: Utilitzar funcions com
fscanf()
,fgets()
, ofread()
. - Escriure en un arxiu: Utilitzar funcions com
fprintf()
,fputs()
, ofwrite()
.
- Modes d'Apertura
Quan s'obre un arxiu amb fopen()
, es pot especificar el mode d'apertura:
"r"
: Llegeix. L'arxiu ha d'existir."w"
: Escriu. Crea un arxiu nou o sobreescriu l'existent."a"
: Afegeix. Escriu al final de l'arxiu."r+"
: Llegeix i escriu. L'arxiu ha d'existir."w+"
: Llegeix i escriu. Crea un arxiu nou o sobreescriu l'existent."a+"
: Llegeix i escriu. Escriu al final de l'arxiu.
Exemple Pràctic
Obrir i Tancar un Arxiu
#include <stdio.h> int main() { FILE *file; // Obrir un arxiu en mode d'escriptura file = fopen("example.txt", "w"); if (file == NULL) { printf("No s'ha pogut obrir l'arxiu.\n"); return 1; } // Escriure en l'arxiu fprintf(file, "Hola, món!\n"); // Tancar l'arxiu fclose(file); return 0; }
Llegir d'un Arxiu
#include <stdio.h> int main() { FILE *file; char buffer[100]; // Obrir un arxiu en mode de lectura file = fopen("example.txt", "r"); if (file == NULL) { printf("No s'ha pogut obrir l'arxiu.\n"); return 1; } // Llegir una línia de l'arxiu if (fgets(buffer, 100, file) != NULL) { printf("Contingut de l'arxiu: %s", buffer); } // Tancar l'arxiu fclose(file); return 0; }
Exercicis Pràctics
Exercici 1: Crear i Escriure en un Arxiu
Crea un programa que obri un arxiu anomenat data.txt
en mode d'escriptura i escrigui les següents línies:
Solució
#include <stdio.h> int main() { FILE *file; file = fopen("data.txt", "w"); if (file == NULL) { printf("No s'ha pogut obrir l'arxiu.\n"); return 1; } fprintf(file, "Línia 1: Hola, món!\n"); fprintf(file, "Línia 2: Aprenent C és divertit.\n"); fclose(file); return 0; }
Exercici 2: Llegir i Mostrar el Contingut d'un Arxiu
Crea un programa que obri l'arxiu data.txt
en mode de lectura i mostri el seu contingut línia per línia.
Solució
#include <stdio.h> int main() { FILE *file; char buffer[100]; file = fopen("data.txt", "r"); if (file == NULL) { printf("No s'ha pogut obrir l'arxiu.\n"); return 1; } while (fgets(buffer, 100, file) != NULL) { printf("%s", buffer); } fclose(file); return 0; }
Errors Comuns i Consells
- No oblidar tancar l'arxiu: Sempre assegura't de tancar l'arxiu amb
fclose()
per evitar fuites de memòria. - Comprovar si l'arxiu s'ha obert correctament: Després de cridar
fopen()
, comprova si el punter ésNULL
per assegurar-te que l'arxiu s'ha obert correctament. - Utilitzar el mode d'apertura correcte: Assegura't d'utilitzar el mode d'apertura adequat per a l'operació que vols realitzar (lectura, escriptura, etc.).
Conclusió
En aquesta secció, hem après els conceptes bàsics de la gestió d'arxius en C, incloent els tipus d'arxius, les operacions bàsiques, i els modes d'apertura. També hem vist exemples pràctics de com obrir, llegir i escriure en arxius. Aquests coneixements són fonamentals per a qualsevol programador que desitgi treballar amb dades persistents en C.
Curs de Programació en C
Mòdul 1: Introducció al C
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
Mòdul 5: Arrays i Strings
Mòdul 6: Punteres
Mòdul 7: Estructures i Unions
Mòdul 8: Assignació Dinàmica de Memòria
Mòdul 9: Gestió d'Arxius
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat