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值输出,以便更好领会。。

目录
相关文章
|
19天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
28天前
|
存储 C语言 C++
如何通过指针作为函数参数来实现函数的返回多个值
在C语言中,可以通过将指针作为函数参数来实现函数返回多个值。调用函数时,传递变量的地址,函数内部通过修改指针所指向的内存来改变原变量的值,从而实现多值返回。
|
28天前
|
存储 搜索推荐 C语言
如何理解指针作为函数参数的输入和输出特性
指针作为函数参数时,可以实现输入和输出的双重功能。通过指针传递变量的地址,函数可以修改外部变量的值,实现输出;同时,指针本身也可以作为输入,传递初始值或状态。这种方式提高了函数的灵活性和效率。
|
1月前
|
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开发知识可参考相关书籍。
85 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
利用指针函数
【10月更文挑战第2天】利用指针函数。
18 1
|
1月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
241 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
1月前
|
算法 搜索推荐 C语言
【C语言篇】深入理解指针4(模拟实现qsort函数)
【C语言篇】深入理解指针4(模拟实现qsort函数)
23 2
|
2月前
|
Java Linux Python
Linux环境下 代码java调用python出错
Linux环境下 代码java调用python出错
56 3
|
2月前
|
Linux Shell Python
9-7|salt代码在linux机子那个目录
9-7|salt代码在linux机子那个目录
|
2月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
下一篇
无影云桌面