读书共享 Primer Plus C-part11
第十四章结构和其他数据形式
关于fread以及fwrite
- fread(char* buff,int size,int count,FILE* fp)
- fwrite(char* buff,int size,int count,FILE* fp)
#include<stdio.h>
#include<string.h>
typedef struct book_s
{
int count;
char name[100];
char author[100];
float price;
}Book;
int main()
{
Book books[3] ;
strcpy(books[0].name,"liuchuanwu0" );
strcpy(books[0].author,"liu chuan wu 0");
books[0].price = 1.00;
strcpy(books[1].name,"liuchuanwu1" );
strcpy(books[1].author,"liu chuan wu 1");
books[1].price = 1.00;
strcpy(books[2].name,"liuchuanwu2" );
strcpy(books[2].author,"liu chuan wu 2");
books[2].price = 1.02;
FILE * fp =fopen("./book.list","a+");
int index ;
for(index=0;index<3;index++)
{
fwrite(&books[index],sizeof(Book),1,fp);
}
memset(&books[2],0,sizeof(Book));
printf("%s \n",books[2].name);
rewind(fp) ;
fread(&books[2],sizeof(Book),1,fp);
printf("%s \n",books[2].name);
}
结果如下:–结构体可以正常的转存入文件,且vim查看存在乱码,但是可以正常的读写
linux:/home/lcw/code # ./a.outliuchuanwu0
linux:/home/lcw/code # cat book.list
pղKliuchuanwu0¢ÿÿÿÿ¢p¢¢D.ι
¶ҩ¸@
liu chuan wu 0۩h¢.N=
读书共享 Primer Plus C-part11的更多相关文章
- 读书共享 Primer Plus C-part 5
第五章 运算符.表达式和语句 关于+- 的一元运算符和二元运算符的区别 a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值 a+=1: 事实上相当于++a a=a+1: 虽然有点雷同于a+ ...
- 读书共享 Primer Plus C-part 7
第十章 数组和指针 1.关于二维数组跟指针 #include<stdio.h> int main() { ][]={{,,,},{,,,},{,,,}}; ; ;i< ;i++) ...
- 读书共享 Primer Plus C-part 8
第十三章 文件输入/输出 fopen--fclose fopen 是文件的操作的开始 fclose是文件操作的结束 getc--putc getchar--putchar getc对应文件的获取单个字 ...
- 读书共享 Primer Plus C-part 12
第十四章 结构和其他数据形式 1.关于上struct与union 的区别 #include<stdio.h> typedef union Book_u { int pags; int mo ...
- 读书共享 Primer Plus C-part 9
第十二章 存储类.链接和内存管理 针对代码块中的static变量做如下范本 #include ...
- 读书共享 Primer Plus C-part 4
第四章 字符串和格式化输入输出 关于printf - 左对齐 #include<stdio.h> void main() { char str [100] = "liuchua ...
- Primer C++第五版 读书笔记(一)
Primer C++第五版 读书笔记(一) (如有侵权请通知本人,将第一时间删文) 1.1-2.2 章节 关于C++变量初始化: 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义 ...
- 读书笔记之:C++ Primer (第4版)及习题(ch12-ch18) [++++]
读书笔记之:C++ Primer (第4版)及习题(ch12-ch18) [++++] 第12章 类 1. 类的声明与定义:前向声明,不完全类型 2. 从const函数返回*this 3. 可变数据成 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记2
<3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...
随机推荐
- 在Ubuntu虚拟机搭建数据库系统
连接数据库: mysql -uroot -p 输入数据库密码即可登陆. 查看mysql版本信息: mysql> select version(); +---------------------- ...
- python网络编程(进程与多线程)
multiprocessing模块 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程. multiproce ...
- 从零开始学习前端JAVASCRIPT — 5、JavaScript基础BOM
1:BOM(Browser Object Model)概念 window对象是BOM中所有对象的核心. 2:window属性(较少用) self:self代表自己,相当于window. windo ...
- Hadoop问题:apt-get install docker-engine -> Depends: init-system-helpers (>= 1.18~) but 1.14 is to be installed
问题描述:$ apt-get install docker-engine -> Depends: init-system-helpers (>= 1.18~) but 1.14 is to ...
- Thrift之TProtocol系列TCompactProtocol解析
TCompactProtocol协议作为TBinaryProtocol协议的升级强化版,都作为二进制编码传输方式,采用了一种乐器MIDI文件的编码方法(wiki,百度下),简单介绍下两种思想: 1: ...
- python中的Queue(队列)详解
一.Queue简介 python中的队列分类可分为两种: 1.线程Queue,也就是普通的Queue 2.进程Queue,在多线程与多进程会介绍. Queue的种类: FIFO: Queue.Que ...
- MVVM探索:从ViewModel关闭Window的最佳实践
在WPF里使用MVVM开发的时候,似乎总是不可避免的会遇到这样一个问题:ViewModel在处理完业务之后需要关闭这个Window,这时候要怎么处理? 网上有很多解决方案:有的在ViewModel抛出 ...
- c# winform 类似android toast消息功能
先看下效果: 支持动画,支持声音,支持定时自动关闭 使用方法: var notifycation = new Notification("My Notification", &qu ...
- FORTH基础
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- 流API--初体验
在JDK8新增的许多功能中,有2个功能最重要,一个是Lambda表达式,一个是流API.Lambda表达式前面我已经整理过了,现在开始整理流API.首先应该如何定义流API中的"流" ...