c - 使用 C 中的 read() 追加到缓冲区

标签 c file append buffer

我想使用 C 语言中的 read() 命令将 20 个字符 block 的文本文件中的数据读入缓冲区,直到文件末尾。

while (n != 0) {    
    n = read(filedescriptor, buffer, 20);
}

这每次都会覆盖缓冲区。是否可以使用read()命令追加到缓冲区?

最佳答案

绝对有可能。但你应该确切地知道你的缓冲区有多大。

如果你有

#define BUFFER_SIZE 200
char buf[BUFFER_SIZE];
int nbuf = 0;       /* number of characters read into buffer */
int r;

你可以写类似的东西

while(nbuf < BUFFER_SIZE) {
    int n_to_read = 20;
    if(nread + n_to_read > BUFFER_SIZE) /* make sure won't overflow buffer */
        n_to_read = BUFFER_SIZE - nread;
    r = read(fd, &buf[nbuf], n_to_read);
    if(r <= 0) break;    /* error / EOF */
    nbuf += r;
}

如果您想展示对 C 中数组和指针之间“等价性”的理解,您可以将 read 调用重写为

    r = read(fd, buf + nbuf, n_to_read);

事实上,很多人都会这样写。

附注我会使用 freadFILE * 指针,而不是 read 和整数文件描述符。

关于c - 使用 C 中的 read() 追加到缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887462/

相关文章:

c++ - 生成文件行 `test -f `

将复杂条件从 C 转换为 Fortran

java - 在文件夹中创建一个文本文件

JQuery:根据复选框状态添加/删除 html

c - 读取字符串并将其分配给数组

在 mingw 中编译库时更改输出 dll 名称

python - 如果文件不存在则创建文件,然后以 RW 模式打开该文件

python - 如何将外部文件中的分数添加到字典中并对它们进行从 1 到 10 的排名

python - 根据另一个列表中的出现将项目 append 到列表

java - 行尾,FileWriter\n