LINUX ANSI C库函数FOPEN()的文件流指针结构体访问代码

简介: 1 [root@localhost ccode]# cat ptr_struct_file.c 2 #include 3 #include 4 #include 5 6 #define ptr(CONTENT, MSG) printf(CONTENT":\t%p\...
 1 [root@localhost ccode]# cat ptr_struct_file.c 
 2 #include <stdlib.h>
 3 #include <stdio.h>
 4 #include <string.h>
 5 
 6 #define ptr(CONTENT, MSG) printf(CONTENT":\t%p\n",MSG)
 7 
 8 int main(int argc, char *argv[])
 9 {
10     FILE *fp_src, *fp_des;
11     char buffer[10], buffer1[128];
12     int i = 0;
13     if((fp_src = fopen(argv[1], "r+")) == NULL)
14     {
15         perror("open1");
16         exit(EXIT_FAILURE);
17     }
18     if((fp_des = fopen(argv[2], "w+")) == NULL)
19     {
20         perror("open2");
21         exit(EXIT_FAILURE);
22     }
23     setvbuf(fp_src, buffer1, _IOLBF, 128);
24 
25     do
26     {
27         ptr("src_IO_read_ptr", fp_src->_IO_read_ptr);
28         ptr("_IO_read_end", fp_src->_IO_read_end);
29         ptr("_IO_read_base", fp_src->_IO_read_base);
30         ptr("src_IO_write_ptr", fp_src->_IO_write_ptr);
31         ptr("_IO_write_base", fp_src->_IO_write_base);
32         ptr("_IO_write_end", fp_src->_IO_write_end);
33         ptr("_IO_buffer_base\t", fp_src->_IO_buf_base);
34         ptr("_IO_buffer_end\t", fp_src->_IO_buf_end);
35         memset(buffer, '\0', 10);
36         i = fread(buffer, 1, 10, fp_src);
37         fwrite(buffer, 1, i, fp_des);
38         printf("i's value is :%d\n", i);
39         ptr("des_IO_read_ptr", fp_des->_IO_read_ptr);
40         ptr("des_IO_write_ptr", fp_des->_IO_write_ptr);
41     }while(i == 10);
42     fclose(fp_src);
43     fclose(fp_des);
44 }

因为不太解决BUFFER方面设置和FWRITE()和FOPEN()的参数,

特意加了I值输出,以便更好领会。。

目录
相关文章
|
3天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
14 3
|
2天前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
7 2
|
20天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
66 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
27天前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
|
27天前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
|
27天前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
82 6
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
119 3
|
2月前
|
Linux
在Linux内核中根据函数指针输出函数名称
在Linux内核中根据函数指针输出函数名称
|
29天前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
20 0