Elf*_*yer 5 c file-io printf fdopen
我想要一个FILE*类型使用fprintf.我需要用来fdopen获得一个FILE*而不是open那个返回一个int.但是,我们可以做同样的fdopen和open?(我从未使用过fdopen)
我想这样做fdopen:
open("my_file", 0_CREAT | O_RDWR | O_TRUNC, 0644);
Run Code Online (Sandbox Code Playgroud)
fdopen获取之前可以返回的文件描述符open,因此这不是问题.
只是open你的文件获取描述符,然后fdopen是描述符.
fdopen简单地创建一个用户空间缓冲的流,采用支持read和write操作的任何类型的描述符.
fdopen()使用文件描述符来文件指针:该fdopen()函数将流与文件描述符相关联.文件描述符是从获得open(),dup(),creat(),或者pipe(),它打开的文件,但不返回指向一个FILE结构流.Streams是几乎所有stdio库例程的必要输入.
FILE* fp = fdopen(fd, "w");
Run Code Online (Sandbox Code Playgroud)
此示例代码可以帮助您更多地使用fprintf():
int main(){
int fd;
FILE *fp;
fd = open("my_file",O_WRONLY | O_CREAT | O_TRUNC);
if(fd<0){
printf("open call fail");
return -1;
}
fp=fdopen(fd,"w");
fprintf(fp,"we got file pointer fp bu using File descriptor fd");
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意:
fclose(),fd也关闭.ref:该fclose()函数close()对与stream指向的流关联的文件描述符执行a . | 归档时间: |
|
| 查看次数: |
16248 次 |
| 最近记录: |