c語(yǔ)言read函數(shù)的用法是什么

小億
364
2023-11-10 16:00:39

在C語(yǔ)言中,read()函數(shù)用于從文件描述符中讀取數(shù)據(jù)。它的原型如下:

#include <unistd.h>

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

參數(shù)解釋?zhuān)?/p>

  • fd:要讀取的文件描述符,可以是標(biāo)準(zhǔn)輸入(0)、標(biāo)準(zhǔn)輸出(1)或者標(biāo)準(zhǔn)錯(cuò)誤(2),或者是通過(guò)open()函數(shù)打開(kāi)的文件描述符。
  • buf:用于接收讀取數(shù)據(jù)的緩沖區(qū)的指針。
  • count:要讀取的字節(jié)數(shù)。

返回值解釋?zhuān)?/p>

  • 如果成功讀取數(shù)據(jù),則返回實(shí)際讀取的字節(jié)數(shù)。
  • 如果已到達(dá)文件末尾,則返回0。
  • 如果發(fā)生錯(cuò)誤,則返回-1,并設(shè)置errno變量以表示具體錯(cuò)誤原因。

使用示例:

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

int main() {
    int fd = open("file.txt", O_RDONLY); // 打開(kāi)文件
    if (fd == -1) {
        perror("open");
        return 1;
    }

    char buf[1024];
    ssize_t bytesRead = read(fd, buf, sizeof(buf)); // 從文件中讀取數(shù)據(jù)
    if (bytesRead == -1) {
        perror("read");
        return 1;
    }

    printf("Read %zd bytes: %s\n", bytesRead, buf);

    close(fd); // 關(guān)閉文件

    return 0;
}

上述示例中,首先使用open()函數(shù)打開(kāi)了一個(gè)文件,并獲得了一個(gè)文件描述符fd。然后使用read()函數(shù)從文件中讀取數(shù)據(jù),將讀取的數(shù)據(jù)存儲(chǔ)在緩沖區(qū)buf中,最多讀取sizeof(buf)字節(jié)。最后,通過(guò)printf()函數(shù)打印讀取的字節(jié)數(shù)和數(shù)據(jù)內(nèi)容。最后,使用close()函數(shù)關(guān)閉了文件描述符。

0