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天】使用指针访问数组元素。
53 3
|
4天前
|
存储 Linux
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
49 26
|
2月前
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
87 19
|
2月前
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
81 18
|
2月前
|
存储 编译器 Linux
动态链接的魔法:Linux下动态链接库机制探讨
本文将深入探讨Linux系统中的动态链接库机制,这其中包括但不限于全局符号介入、延迟绑定以及地址无关代码等内容。
843 25
|
2月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
121 13
|
3月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
81 4
|
3月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
252 4
|
3月前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
63 2
|
4月前
|
存储 C语言 C++
如何通过指针作为函数参数来实现函数的返回多个值
在C语言中,可以通过将指针作为函数参数来实现函数返回多个值。调用函数时,传递变量的地址,函数内部通过修改指针所指向的内存来改变原变量的值,从而实现多值返回。