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 ésNULLper 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
