Archivos

De Proyectos
Saltar a: navegación, buscar

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. Lee byte a byte sin hacer conversión de salto de linea y retorno de carro.
 t  Abre el fichero en modo texto. Retorno de carro y salto de linea se convierten a caracteres de salto de linea
 +  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

rewind

void rewind(FILE *fichero);
  • Situa el cursor de lectura/escritura al principio del archivo

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
printf( "%c", fgetc(archivo) );

fread

size_t fread(void *puntero, size_t tamanyo, size_t nmemb, FILE *stream);
  • El puntero apunta a la memoria donde se guardan los datos leidos
  • tamanyo es el numero de bytes a leer
  • nmemb son el numero de elementos (de longitud tamanyo) a leer
  • stream es el fichero
  • Es una función útil para leer arrays o estructuras de "golpe"

fwrite

size_t fwrite(const void *puntero, size_t tamanyo, size_t nmemb, FILE *stream);
  • El puntero es un puntero a la información que va ha ser escrita
  • tamanyo es el numero de bytes a escribir
  • nmemb es el número de elemenots (de longitdu tamanyo) a escribir
  • stream es el fichero
  • Es una función útil para escribir arrays o estructuras de "golpe"