Lectura y escritura de archivos Linux

Funciones de la biblioteca:

#include <unistd.h>

Lectura de archivos:

ssize_t read (int fd, void * buf, size_t count) ;

Valor de retorno : El valor de retorno es el número de bytes realmente leídos. Si devuelve 0, significa que se ha llegado al final del archivo o que no hay datos para leer. Si el recuento del parámetro es 0, entonces read () no tiene ningún efecto y devuelve 0. Si ocurre un error, devuelve -1

Escritura de archivos:

ssize_t write (int fd, const void * buf, size_t count);

Valor de retorno : si tiene éxito, write () devolverá el número de bytes realmente escritos. Cuando ocurre un error, devuelve -1 y el código de error se almacena en errno. 

fd   : descriptor de archivo (0: combinado con la entrada estándar del proceso, 1: combinado con la salida estándar del proceso, 2: combinado con el error estándar)

buf : apunta al área de búfer que contiene los datos que se están escribiendo, o un área de búfer vacía donde se colocan los nuevos datos

recuento : el tamaño de los datos que se solicita leer o escribir

Código:

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>

int main()
{
        int fd;
        char *buf = "Read and write files";
        
        //打开文件 file-3
        fd = open("./file-3",O_RDWR|O_CREAT,0600);
        printf("fd = %d\n",fd);

        //将缓存区 buf 的内容写入文件 file-3 
        int n_write = write(fd,buf,strlen(buf));
        printf("n_write = %d\n",n_write);

        char *readBuf;
        readBuf = (char *)malloc(sizeof(char) * n_write);
        
        //将光标移动到文件开头的位置(read读取的是光标后面的内容)
        lseek(fd,0,SEEK_SET);

        //读取文件的内容到缓存区 readBuf
        int n_read = read(fd,readBuf,n_write);
        printf("readBuf = %s\n",readBuf);
        printf("n_read = %d\n",n_read);
        close(fd);

        return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_49472648/article/details/108786551
Recomendado
Clasificación