Uso básico de declaraciones de escritura y lectura en lenguaje C
1. Nombre de la función: escribir
Archivo de encabezado: #include
Definir función: ssize_t escribir (int fd, const void * buf , size_t count);
Descripción de la función: write() escribirá el conteo de bytes desde la memoria señalada por el puntero buf al archivo señalado por el parámetro fd. Por supuesto, las posiciones de lectura y escritura de archivos también se moverán en consecuencia.
Valor de retorno: si write() se realiza correctamente, devolverá el número de bytes realmente escritos. Cuando ocurre un error, se devuelve -1 y el código de error se almacena en errno.
Código de error:
EINTR Esta llamada fue interrumpida por una señal.
EAGAIN Cuando se utilizan E/S sin bloqueo (O_NONBLOCK), este valor se devuelve si no se pueden leer datos.
EBADF El parámetro fd no es un descriptor de archivo válido o el archivo se ha cerrado.
Ejemplo de programa: #include
#include
#include
#include
#include
#include
intmain(void) p>
{
inthandle;
charstring[40];
intlength,res;
/*
Cree un archivo llamado "TEST.$$$" en el directorio actual y escriba
una cadena en él. Si "TEST.$$$" ya existe, se sobrescribirá.
*/
if((handle=open("TEST.$$$",O_WRONLY|O_CREAT|O_TRUNC,
S_IREAD|S_IWRITE))==-1)
{
printf("Erroropeningfile.\n");
exit(1);
}
strcpy(string,"¡Hola mundo!\ n");
longitud=strlen(cadena);
if((res=write(handle,string,length))!=longitud)
{
printf("Error al escribir en el archivo.\n");
salir(1);
}
printf("Escribió% dbytestothefile.\n",res);
cerrar(manejar);
return0;
}
structxfcb{
charxfcb_flag;/*Contiene0xfftoindicatexfcb*/
charxfcb_resv[5];/*Reservado paraDOS*/
charxfcb_attr;/*Atributo de búsqueda*/
structfcbxfcb_fcb ;/*Thestandardfcb*/
};
2 Nombre de función: leer
Archivo de encabezado: #include
Función de definición: ssize_t read(int fd,void * buf,size_t count);
Descripción de la función: read() transferirá el recuento de bytes desde el archivo señalado por el parámetro fd al puntero buf. a la memoria. Si el recuento del parámetro es 0, la lectura es el número de bytes realmente leídos. Si se devuelve 0, significa que se ha llegado al final del archivo o que no hay datos para leer. Además, se modificará la posición de lectura y escritura del archivo. moverse con los bytes leídos.
Notas adicionales: si read() funciona sin problemas, devolverá el número real de bytes leídos. Es mejor comparar el valor devuelto con el recuento del parámetro si el número de bytes devueltos es mayor que el. número de bytes leídos, es mejor comparar el valor de retorno con el recuento de parámetros. Si el número es pequeño, es posible leer el final del archivo, leerlo desde una tubería o terminal, o leer() fue interrumpido por un. señal. Cuando ocurre un error, se devuelve -1, el código de error se almacena en errno y las posiciones de lectura y escritura del archivo son impredecibles.
Código de error:
EINTR Esta llamada fue interrumpida por una señal.
EAGAIN Cuando se utilizan E/S no bloqueables (O_NONBLOCK), este valor se devuelve si no se pueden leer datos.
El parámetro fd de EBADF no es un descriptor de archivo válido o el archivo se ha cerrado.
Ejemplo de programa: #include
#include
#include
#include
#include p>
#include
int?main(void)
{
void?*buf;
int?handle ,?bytes;
buf?=?malloc(10);
/*
Busca?un?archivo?en?el?archivo?actual? directorio?llamado?TEST.$$$?e?intenta
leer?10?bytes?desde?it.?A
}
si ?((bytes?=?read(handle,?buf,?10))?==?-1)?{
printf("Lectura? Error.\n");
salir(1);
}
else?{
printf("Leer:?%d?bytes?read.\n", ?bytes);
}
retorno?0;