gpt4 book ai didi

c - 读取文件中的意外值

转载 作者:行者123 更新时间:2023-11-30 21:46:12 25 4
gpt4 key购买 nike

我有一个文件y.txt包含文本 abcdefgh

此代码将文件描述符( int fd )转换为文件指针( FILE* ),并尝试从中读取。

#include <stdio.h>
#include<fcntl.h>
int main()
{
FILE *fp;
int fd = open("y.txt",O_RDONLY);

printf("%d",fd);
fp=fdopen(fd,"r");
close(fd);
char a[5];
a[4]='\0';
fread(a,2,1,fp);
printf("%s",a);
return 0;
}

程序输出p而不是ab ,如果它是从 y.txt 的开头读取,则应该如此.

我做错了什么?

最佳答案

我发现您的代码有问题。在完成 fp 之前就close(fd),这可能会导致对 fread 的调用失败。这是因为当您使用 fdopen 时:

The file descriptor is not dup'ed.

这意味着当您运行 close(fd) 时,fp 尝试读取的底层文件将被关闭。要解决此问题,您可以删除对 close 的调用并添加对 fclose 的调用。它也应该关闭fd

如果你真的只想要一个FILE *,你应该能够使用fopen打开它,同时跳过 fd

关于c - 读取文件中的意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472130/

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