Archivos
Abrir un archivo
Modos de apertura de un fichero:
r Abre un fichero existente para lectura.
w Crea un fichero nuevo (o borra su contenido si existe) y lo abre para escritura.
a Abre un fichero (si no existe lo crea) para escritura. El puntero se sitúa al final del archivo, de forma que se puedan añadir datos si borrar los existentes.
Se pueden añadir una serie de modificadores siguiendo a los modos anteriores:
b Abre el fichero en modo binario.
t Abre el fichero en modo texto.
+ Abre el fichero para lectura y escritura.
Ejemplos de combinaciones:
rb+ - Abre el fichero en modo binario para lectura y escritura.
w+ - Crea (o lo borra si existe) un fichero para lectura y escritura.
rt - Abre un archivo existente en modo texto para lectura.
Escribir en archivo
#include <iostream>
#include <stdio.h> //Libreria donde estan implementadas las funciones de archivos
int main(void){
FILE *archivo; //Puntero de tipo archivo
char nombre[] = "datos.txt";
archivo = fopen(nombre, "w"); //Función para abrir el fichero
if(archivo){ //Si el fichero no se ha podido abrir contendra NULL
fprintf(archivo, "%s \n", "Hola que tal"); //Funcion para escribir en el fichero
fclose(archivo); //Cerrar el fichero al acabar
}
}
Leer de archivo
#include <iostream>
#include <stdio.h>
int main(){
FILE *archivo;
char nombre[]="datos.txt";
char frase[80];
archivo = fopen(nombre, "r");
if(archivo){
fscanf(archivo, " %[^\n]", &frase); //Función para leer del archivo. %[^\n] con esto se lee hasta el final de la frase no como con %s que lee hasta el espacio entre palabras
while(!feof(archivo)){ //La función feof devuelve 0 mientras no se llega al final del archivo
printf("%s\n", frase);
fscanf(archivo, " %[^\n]", &frase);
}
fclose(archivo);
}
}
Funciones
fopen
fprintf
fscanf
fclose
fputs
int fputs(const char *cadena, FILE *stream);
- Escribe una cadena en el archivo
- Retorna EOF si hay un error de escritura y un valor positivo si se escribe bien
fputc
int fputc(int c, FILE *stream);
- Escribe un caracter en el fichero
- Transforma la variable a unsigned char
- Cuando escribe avanza una posición
- Devuelve EOF si obtiene error y el caracter escrito si lo escribe
fgets
char *fgets(char *cadena, int n, FILE *stream);
- Lee como máximo n-1 caracteres de un fichero y lo guarda en cadena
- No lee el caracter de nueva liena
- Escribe un caracter nulo después del último caracter leído
- Retorna la cadena si se ha reliazado con exito
- Si hay un fallo devuelve un puntero NULL
fgetc
int fgetc(FILE *stream);
- Lee un caracter y lo devuelve como un int. Después avanza una posición.
- Si es el final del fichero retorna EOF
- Si ocurre un error también devuelve EOF