Cómo leer datos binarios en un archivo txt y convertirlos en una matriz unidimensional usando lenguaje C
Nombre de la función: leer
Función: leer desde un archivo
Prototipo de función: int read(int handle, void *buf, int nbyte);
Archivo de encabezado de tabla: #includelt.hgt;
Descripción de la función: read() leerá desde el archivo señalado. a por el identificador a buf La memoria a la que apunta el puntero transfiere nbytes de bytes. Si el argumento nbyte es 0, read() no tendrá ningún efecto y devolverá 0. El valor de retorno 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.
Programa de muestra:
1
2
3
4
5
6
6
8
9
10
11 p> p>
12
13
14
15
16
17 p>
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include lt;stdio.hgt;
#include lt;io.hgt;
#include lt ;alloc .hgt;
#include lt; fcntl.hgt;
#include lt;process.hgt;
#include lt;sys\stat. hgt;
int main(void)
{
void *buf
int identificador
<; p> buf = malloc(10);/*
Busque un archivo llamado TEST.$$$ en el directorio actual e intente
leer desde son 10 bytes.
Para usar este ejemplo, debe crear el archivo TEST.$$$
*/
if ((handle =
open ("TEST.$$ $", O_RDONLY | O_BINARY, S_ IWRITE | S_IREAD)) == -1)
{
printf("Error al abrir archivo\n");
salir(1);
}
if ((bytes = leer(manejar, buf, 10)) == -1) {
printf( "Error de lectura.\n");
exit(1);
}
else {
printf("Leer: d bytes leídos.\n", bytes);
}
devuelve 0;
}
2Linux C
Editar
Definir función
size_t read(int fd, void *buf, size_t count);
Valor de retorno
Devuelve el número de bytes leídos correctamente, devuelve - 1 en caso de error y establece errno. Si el archivo finalizó antes de llamar a lectura, leer devuelve 0.
Parámetros
El recuento de parámetros es el número de bytes que se solicita leer. Los datos leídos se guardan en el búfer buf y se mueve la posición actual de lectura/escritura del archivo. hacia atrás. Cabe señalar que esta posición de lectura/escritura puede ser diferente de la posición de lectura/escritura que utiliza la biblioteca de E/S estándar de C. Esta posición de lectura/escritura se registra en el núcleo, mientras que la posición de lectura/escritura utiliza la I/o estándar de C. La biblioteca /O es la ubicación del búfer de E/S del espacio de usuario. Por ejemplo, si usa fgetc para leer un byte, entonces fgetc puede leer previamente 1024 bytes del kernel en el búfer de E/S y luego devolver el primer byte. En este momento, la posición de lectura/escritura del archivo es. en el kernel El registro es 1024 y la posición de lectura / escritura registrada en la estructura ARCHIVO es 1. Tenga en cuenta que el valor de retorno es de tipo ssize_t, que representa un size_t con signo, de modo que se puede obtener un recuento de bytes positivo de 0 (que indica que se ha alcanzado el final del archivo) o un valor negativo de -1 (que indica un error). ser devuelto.
Cuando la función de lectura regresa, el valor de retorno representa el número de bytes en el primer buf que se acaba de leer. En algunos casos, el número real de bytes leídos (el valor de retorno) será menor que el recuento de bytes de lectura solicitado, por ejemplo: cuando se lee un archivo normal, se llega al final del archivo antes de que se lean los bytes del recuento de lectura. . Por ejemplo, si hay 30 bytes desde el final del archivo y se realiza una solicitud para leer 100 bytes, la lectura devolverá 30 y la siguiente lectura devolverá 0.