【发布时间】:2017-03-21 04:57:51
【问题描述】:
我有一个文件 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 的开头读取它应该输出。
我做错了什么?
【问题讨论】:
-
请先阅读How to Ask页面。
-
好吧,我知道它不好,我真的很抱歉,但请告诉我为什么当我将 fd 转换为文件指针时为什么它没有给我正确的答案。它给了我 p 但是y.txt 包含:abcdefg
-
也许可以试试
fopen而不是open/fdopen -
yano: fopen 不使用文件描述符打开文件。我只是将文件描述符转换为文件指针
-
a) 在读取文件之前不要关闭文件,b) 在每个
printf语句的末尾添加\n,c) 读取 4 字符来填充字符串,用fread(a,4,1,fp);
标签: c operating-system