Función de escribir en el lenguaje C

Función de escribir en el lenguaje C

La gestión de archivos en la programación es una tarea que el programador debe ser fluido. El conocimiento de las diversas funciones abiertas, de lectura y escritura es esencial porque siempre los necesitamos para almacenar o eliminar la información que se almacena en los archivos.

En este artículo de Sugerencia de Linux, aprenderá cómo usar la función Write () para escribir los archivos.

Explicaremos todo sobre esta Ella, su sintaxis, el método de llamada, los argumentos de entrada y salida, el tipo de datos que acepta en cada caso y cómo declararlo correctamente.

Luego, aplicamos lo que aprendimos poniendo el uso de esta función en ejemplos prácticos que preparamos para usted con fragmentos e imágenes de código, mostrando el uso de Write () en el idioma C.

Para que tenga un conocimiento integral del uso de la función Write (), agregamos una sección especial que describe los errores individuales que pueden ocurrir cuando se usa esta función, así como su detección e identificación, para que tenga el Técnicas necesarias para una solución rápida en caso de su ocurrencia.

Sintaxis de la función Write () en el lenguaje C

int write (int fd, void *buf, size_t n);

Descripción de la función Write () en el idioma C

La función Write () se escribe en un archivo abierto. Esta función escribe el contenido del búfer que apunta por "BUF" al archivo especificado por su descriptor en el argumento de entrada "FD". El tamaño del bloque a escribir en el archivo debe especificarse en el argumento de entrada "n".

Para poder escribir con la función Write (), el archivo debe abrirse con la función Open () y especificado en los atributos O_RDONLY o O_RDWR. De lo contrario, esta función no tiene efecto.

Si la llamada es exitosa, devuelve el número de caracteres que se ingresan. Si se produce un error mientras se escribe, devuelve un resultado igual a -1. El código de identificación que indica el error se puede recuperar de la variable global errno que se define en el "ERRNO.encabezado.

Más tarde, encontrará una sección donde explicamos cómo detectar e identificar los errores más comunes de esta función.

La función Write () se define en el "Unistd.encabezado. Los indicadores que definen los atributos y el modo para abrir el archivo se definen en "fcntl.H ". Para usar las funciones Open () y Write (), debe incluir estos encabezados en su código de la siguiente manera:

#incluir
#incluir

Cómo escribir en un archivo usando la función Write () en el idioma C

En este ejemplo, escribimos un archivo de texto vacío llamado "Ejemplo.txt "que creamos anteriormente en el directorio" Documentos ".

El primer paso es insertar los encabezados necesarios. Dentro de la función Main (), abra el archivo con la función Open (). Para hacer esto, necesitamos declarar el entero "FD" que sirve como descriptor de archivo, y la matriz de búfer "BUF" de 1024 caracteres que contiene el texto que queremos escribir en el archivo. En este búfer, almacenamos el primer párrafo de la página del hombre GCC en escribirlo en el "Ejemplo.archivo txt ".

Después de abrir el archivo con la función Open () en modo de lectura/escritura, escribimos al archivo llamando a la función Write () y pasando el descriptor del archivo "FD" como el primer argumento de entrada, el puntero "BUF" como el segundo argumento, y el tamaño de la cadena que está contenido en la matriz como el tercer argumento, que obtenemos con la función strlen (). Aquí está el código para este ejemplo:

#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
vacío principal ()

int fd;
Char Buffer [1024] = "Cuando invoca GCC, normalmente realiza preprocesamiento, compilación, ensamblaje y enlace. Las opciones generales le permiten detener este proceso en una etapa intermedia. Por ejemplo, la opción -c dice que no ejecute el enlazador.Entonces la salida consta de la salida de archivos de objetos por el ensamblador.";
FD = Open ("Documentos/Ejemplo.txt ", o_rdwr);
escribir (fd y buffer, strlen (buffer));
cerrar (fd);

En la siguiente figura, vemos la compilación y ejecución de este código junto con el archivo abierto que es escrito por la función Write ():

Cómo agregar un texto al final de un archivo con la función Write () en el idioma C

Cuando se abre un archivo especificando las banderas O_WRONLY o O_RDWR, el cursor salta a la primera posición y comienza a escribir desde allí.

Para agregar un texto al final de un archivo, debe especificarse mediante una lógica u operación entre los indicadores O_WRONLY o O_RDWR y el indicador O_ Append en el argumento de los indicadores de entrada de la función Open () cuando se abre el archivo. De esta manera, el cursor se coloca al final del archivo y la escritura comienza desde allí. Además, los atributos y el modo de escritura se pueden cambiar una vez que el archivo se abre con la función fcntl ().

En la siguiente ilustración, puede ver un código que agrega un texto al final del archivo que escribimos en el ejemplo anterior:

#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
vacío principal ()

int fd;
Char Buffer [1024] = "Este texto se agrega. Este texto se agrega.";
FD = Open ("Documentos/Ejemplo.txt ", o_rdwr | o_append);
escribir (fd y buffer, strlen (buffer));
cerrar (fd);

La siguiente imagen muestra el texto agregado. Como puede ver, con este método de apertura, la función Write () comienza a escribir en la posición del último carácter que se escribe en el archivo:

Cómo detectar e identificar los errores que pueden ocurrir al usar la función Write () en el idioma C

Usar write () puede generar varios errores. Cuando esto sucede, esta función devuelve un resultado que es igual a -1.

La forma más fácil de determinar si se ha producido un error es usar una condición "si" donde la condición es el valor de retorno de -1. Ahora, veamos cómo puede usar este método para determinar si ha ocurrido un error:

int n;
n = escribir (fd, & buffer, strlen (buffer));
if (n == -1)
printf ("Se produjo un error al intentar escribir el archivo.");

Si la función Write () devuelve con un error, pasa a la instrucción "IF" e imprime el mensaje ","Se produjo un error al intentar escribir el archivo".

Cuando ocurre un error, un código numérico se almacena automáticamente en la variable Global Errno que se define en el "ERRNO.encabezado. Este código se puede usar para identificar el error que ocurrió.

El siguiente es un extracto con los errores que puede generar la función Write () y que se definen en el "Errno.encabezado H ”, junto con una breve descripción de cada error y el valor entero asociado:

Definición Valor en errno Error
Águila 11 Intentar otra vez.
Ebadf 9 Número de archivo incorrecto.
Edestaddrreq 89 Dirección de destino requerida.
Edquot 122 Excedió la cuota.
Enfermo 14 Direccion incorrecta.
EfBig 27 Archivo demasiado grande.
Eintr 4 Llamadas del sistema interrumpidas.
Einval 22 Argumento no válido.
Eio 5 Error de E/S.
Enospc 28 no queda espacio en el dispositivo.
Entera 1 Operacion no permitida.

La forma más fácil de identificar un error es abrir un interruptor donde la variable errno es la condición de salto y cada caso es una definición de error.

A continuación, veamos un ejemplo en el que intentamos ingresar un descriptor con un signo negativo, lo que resulta en un error. Para identificar un error, usamos la condición "if" que vimos en el fragmento anterior. Para identificarlo, abrimos un interruptor con los tres errores más comunes que esta función puede producir.

#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
vacío principal()

int fd;
int n;
Char Buffer [1024] = "Hola mundo";
FD = Open ("Documentos/Ejemplo.txt ", o_rdwr);
n = escribir (-2 y buffer, strlen (buffer));
if (n == -1)
switch (errno)
Caso ebadf:
printf ("Número de archivo malo. Error: %i \ n ", errno);
romper;
Caso Einval:
printf ("Argumento no válido. Error: %i \ n ", errno);
romper;
Case EIO:
printf ("Error de E/S . Error: %i \ n ", errno);
romper;


Como podemos ver en la siguiente figura, la función Write () devuelve un error cuando se pasa un descriptor no válido como argumento de entrada. El valor que se recupera de la variable ERRNO se usa como una condición de salto que nos permite identificar el error cuando ingresamos el caso EBADF.

Conclusión

En este artículo de Sugerencia de Linux, le mostramos cómo usar la función Write () para escribir en los archivos. Le mostramos la sintaxis y la descripción teórica de esta función. También explicamos los métodos de detección e identificación de errores para que tenga las herramientas y técnicas necesarias para resolver rápidamente estos problemas.

Para ayudarlo a ver cómo funciona Write (), implementamos el uso de esta función en ejemplos prácticos con códigos e imágenes que muestran el uso de esta y las otras funciones de procesamiento de archivos.

También le mostramos cómo seleccionar el modo de archivo de archivo para insertar un texto al principio o al final del archivo, y qué funciones están disponibles para cambiar estos atributos.