Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

C - E/S de archivo

El último capítulo explicó los dispositivos estándar de entrada y salida manejados por el lenguaje de programación C. Este capítulo cubre cómo los programadores de C pueden crear, abrir, cerrar archivos de texto o binarios para su almacenamiento de datos.

Un archivo representa una secuencia de bytes, independientemente de que sea un archivo de texto o un archivo binario. El lenguaje de programación C brinda acceso a funciones de alto nivel, así como a llamadas de bajo nivel (nivel de SO) para manejar archivos en sus dispositivos de almacenamiento. Este capítulo lo guiará a través de las llamadas importantes para la administración de archivos.

Apertura de archivos

Puede usar el fopen() función para crear un nuevo archivo o para abrir un archivo existente. Esta llamada inicializará un objeto del tipo ARCHIVO , que contiene toda la información necesaria para controlar el flujo. El prototipo de esta llamada de función es el siguiente −

FILE *fopen( const char * filename, const char * mode );

Aquí, nombre de archivo es una cadena literal, que usará para nombrar su archivo y acceder al modo puede tener uno de los siguientes valores −

Sr.No. Modo y descripción
1

r

Abre un archivo de texto existente para fines de lectura.

2

w

Abre un archivo de texto para escribir. Si no existe, se crea un nuevo archivo. Aquí su programa comenzará a escribir contenido desde el principio del archivo.

3

un

Abre un archivo de texto para escribir en modo de adición. Si no existe, se crea un nuevo archivo. Aquí su programa comenzará a agregar contenido en el contenido del archivo existente.

4

r+

Abre un archivo de texto para lectura y escritura.

5

w+

Abre un archivo de texto para lectura y escritura. Primero trunca el archivo a cero si existe, de lo contrario crea un archivo si no existe.

6

a+

Abre un archivo de texto para lectura y escritura. Crea el archivo si no existe. La lectura comenzará desde el principio, pero la escritura solo se puede agregar.

Si va a manejar archivos binarios, utilizará los siguientes modos de acceso en lugar de los mencionados anteriormente −

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

Cerrar un archivo

Para cerrar un archivo, utilice la función fclose(). El prototipo de esta función es −

int fclose( FILE *fp );

El fcerrar(-) la función devuelve cero en caso de éxito, o EOF si hay un error al cerrar el archivo. Esta función en realidad vacía cualquier dato que aún esté pendiente en el búfer al archivo, cierra el archivo y libera cualquier memoria utilizada para el archivo. El EOF es una constante definida en el archivo de cabecera stdio.h .

La biblioteca estándar de C proporciona varias funciones para leer y escribir un archivo, carácter por carácter o en forma de una cadena de longitud fija.

Escribir un archivo

La siguiente es la función más simple para escribir caracteres individuales en una secuencia:

int fputc( int c, FILE *fp );

La función fputc() escribe el valor de carácter del argumento c en el flujo de salida al que hace referencia fp. Devuelve el carácter escrito escrito en caso de éxito de lo contrario EOF si hay un error. Puede usar las siguientes funciones para escribir una cadena terminada en nulo en una secuencia:

int fputs( const char *s, FILE *fp );

La función fputs() escribe la cadena s al flujo de salida al que hace referencia fp. Devuelve un valor no negativo en caso de éxito, de lo contrario EOF se devuelve en caso de cualquier error. Puede usar int fprintf(ARCHIVO *fp,const char *formato, ...) función también para escribir una cadena en un archivo. Prueba el siguiente ejemplo.

Asegúrate de tener /tmp directorio disponible. Si no es así, antes de continuar, debe crear este directorio en su máquina.

#include <stdio.h>

main() {
   FILE *fp;

   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}

Cuando el código anterior se compila y ejecuta, crea un nuevo archivo test.txt en el directorio /tmp y escribe dos líneas usando dos funciones diferentes. Leamos este archivo en la siguiente sección.

Lectura de un archivo

A continuación se muestra la función más simple para leer un solo carácter de un archivo:

int fgetc( FILE * fp );

El fgetc() La función lee un carácter del archivo de entrada al que hace referencia fp. El valor devuelto es el carácter leído, o en caso de algún error devuelve EOF . La siguiente función permite leer una cadena de un flujo −

char *fgets( char *buf, int n, FILE *fp );

Las funciones fgets() lee hasta n-1 caracteres del flujo de entrada al que hace referencia fp. Copia la cadena de lectura en el búfer buf , agregando un null carácter para terminar la cadena.

Si esta función encuentra un carácter de nueva línea '\n' o el final del archivo EOF antes de haber leído el número máximo de caracteres, solo devuelve los caracteres leídos hasta ese punto, incluido el carácter de nueva línea. También puede usar int fscanf(FILE *fp, const char *format, ...) función para leer cadenas de un archivo, pero deja de leer después de encontrar el primer carácter de espacio.

#include <stdio.h>

main() {

   FILE *fp;
   char buff[255];

   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1 : %s\n", buff );

   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);

}

Cuando el código anterior se compila y ejecuta, lee el archivo creado en la sección anterior y produce el siguiente resultado −

1 : This
2: is testing for fprintf...

3: This is testing for fputs...

Veamos un poco más en detalle lo que sucedió aquí. Primero, fscanf() lee solo Esto porque después de eso, encontró un espacio, la segunda llamada es para fgets() que lee la línea restante hasta que encuentra el final de la línea. Finalmente, la última llamada fgets() lee la segunda línea por completo.

Funciones de E/S binarias

Hay dos funciones que se pueden usar para la entrada y salida binaria −

size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
              
size_t fwrite(const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);

Ambas funciones deben usarse para leer o escribir bloques de memorias, generalmente matrices o estructuras.


Lenguaje C

  1. C Entrada Salida (E/S)
  2. Manejo de archivos C
  3. E/S de archivo de Python
  4. Axiomtek:sistema rico en funciones para aplicaciones de visión artificial
  5. acceed:módulos de E / S para comunicación de datos escalable
  6. C - Funciones
  7. C - Archivos de encabezado
  8. Qué son las tarjetas de E / S y cómo funcionan
  9. MATLAB - Salida de datos
  10. C# - E/S de archivos
  11. Python - E/S de archivos