gpt4 book ai didi

c - fdopen 和 fprintf

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:22 28 4
gpt4 key购买 nike

下面的代码应该将“一些文本”写入 demo.txt,但它不起作用:

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

int main(int argc, char *argv[])
{
FILE *fp;
int fd;

if ((fd = open("demo.txt", O_RDWR)) == -1) {
perror("open");
exit(1);
}
fp = fdopen(fd, "w");
fprintf(fp, "some text\n");
close(fd);
return 0;
}

最佳答案

您应该在关闭文件之前使用fflush(fp) 清除缓冲区。

当您写入文件描述符fp 时,数据会被缓冲。但是在将缓冲数据写入文件 demo.txt 之前,您要使用 close(fd) 关闭文件。因此,缓冲数据丢失。如果您执行 fflush(fp),它将确保缓冲数据立即写入 demo.txt。

在对所有打开的文件执行 fclose() 之前,您不应该调用 close()

正确的做法是先做fclose(fp),再做close(fd)

关于c - fdopen 和 fprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com