C语言:将结构体存放到文件中
#include <stdio.h>
#include <stdlib.h>
#define MAXTLEN 70
#define MAXALEN 70
#define MAXBKS 10
struct book{
char title[MAXTLEN];
char author[MAXALEN];
float value;
}; int main(){
struct book library[MAXBKS]; //图书馆
int count = , index, filecount;
int size = sizeof(struct book); //这点值得注意
FILE *pbooks;
if((pbooks = fopen("book.dat","a+b")) == NULL){
fputs("Can not open book.dat file\n", stderr);
exit();
}
rewind(pbooks);
while(count < MAXBKS && fread(&library[count],size,,pbooks) == ){
if(count == ){
puts("Current contents of book.dat: ");
}
printf("%s by %s: $%.2f\n",library[count].title,library[count].author,library[count].value);
count++;
}
filecount = count;
if(count == MAXBKS){
fputs("The book.dat file is full",stderr);
exit();
}
puts("please add the new book, title:");
while(count < MAXBKS && gets(library[count].title) != NULL && library[count].title[] != '\0'){
puts("the author:");
gets(library[count].author);
puts("the value:");
scanf("%f",&library[count++].value);
while(getchar() != '\n'){
continue;
}
if(count < MAXBKS){
puts("---continue---");
}
}
if(count > ){
puts("Here is the list of your books:");
for(index = ; index<count; index++){
printf("%s by %s: $%.2f\n",library[index].title,library[index].author,library[index].value);
}
fwrite(&library[filecount],size,count-filecount,pbooks);
}else{
puts("No books? Too bad\n");
}
puts("Bye\n");
fclose(pbooks);
return ;
}
Current contents of book.dat:
C语言权威指南 by jimmy: $68.00
PHP项目大全 by jimmy: $99.90
please add the new book, title:
C语言:将结构体存放到文件中的更多相关文章
- 如何让c语言使用结构体近似模拟c++中的类
如今统治市场的主流编程语言,如c++,java,大都是面向对象类型的编程语言. 而众所周知,c语言是面向过程的编程语言,但是它拥有一个类似于类的结构,叫做结构体,主要的区别在于结构体无法定义函数. 因 ...
- C语言回顾-结构体、枚举和文件
1.构造类型 根据已经定义的一个或多个数据类型用构造的方法来定义. 分为:数组.结构体和共用体 2.结构体 struct 结构体名{ 成员列表: }; 1)结构体定义完成以后,计算机不会给结构体分配存 ...
- 01.C语言关于结构体的学习笔记
我对于学习的C语言的结构体做一个小的学习总结,总结如下: 结构体:structure 结构体是一种用户自己建立的数据类型,由不同类型数据组成的组合型的数据结构.在其他高级语言中称为记录(record) ...
- go语言学习-结构体
结构体 go语言中的结构体,是一种复合类型,有一组属性构成,这些属性被称为字段.结构体也是值类型,可以使用new来创建. 定义: type name struct { field1 type1 fie ...
- C语言的结构体和C++结构体的区别
关于C++中声明结构体中需要使用构造器创建实例对象的语法: <C++的结构体构造方法的基本概念:结构体的构造方法需要和结构体的名字相同,并且无返回值,也不要void关键字,这样的方法就是构造器的 ...
- 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式
逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...
- 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...
- [日常] Go语言圣经--结构体,JSON习题
Go语言圣经-结构体 1.结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体 2.通常一行对应一个结构体成员,成员的名字在前类型在后,不过如果相邻的成员类型如果相同的话可以被合并到一行 ...
- Go语言 6 结构体、方法和接口
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ Go学习群:415660935 结构体(struct)是由一系列具有相同类型或不同类 ...
随机推荐
- 在Json解析过程中,我为什么用object1.optInt ,和 object1.optString
今天在做Json解析的时候,出现了一段代码没执行的问题,于是找了一下原因: 1.原代码是: 发现 红色的一句 没有执行,查看控制台发现了异常 2.修复bug ,正确的代码为 3.总结 ...
- App Today Extension开发注意事项
从iOS 8起,就有了App Extension.Extension的种类至今也扩充到了19种,应用也很广泛,值得重点关注起来. Extension几乎可以看做一个内嵌的独立App,拥有独立的Bund ...
- OC中的面向对象语法
一. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 打开电脑 播放电 ...
- 自定义Cell的方法
Cell属于UITableView中的组件,有多种定义方式,有系统自带的方法,有自定义的方法. 可以使用系统的方法setSeparatorColor(设置分割线颜色) 设置setSeparatorSt ...
- django tmeplate 循环基数
{% for item in item_list %} {{ forloop.counter }} {# starting index 1 #} {{ forloop.counter0 }} {# s ...
- vs2012中使用Icenium开发应用
Developing a Cross Platform Mobile App in Visual Studio using JavaScript & HTML5 http://www.dotn ...
- jstree静态生成树并为树添加触发事件
本章将介绍如何简单的使用jstree生成树(生成树的数据是静态的),并为树添加点击事件. 1. 建一个jsp页面,引入jquery.js(在其他js前引用),引入jstree所需的js,css文件(可 ...
- Mina 快速入门
Mina是什么 Mina是一个基于NIO的网络框架,使用它编写程序时,可以专注于业务处理,而不用过于关心IO操作.不论应用程序采用什么协议(TCP.UDP)或者其它的,Mina提供了一套公用的接口,来 ...
- 0018 Java学习笔记-面向对象-类的基本要素
类与对象 大街上一个个的人,就是一个个对象 类是对一群对象的抽象,比如人都有性别.年龄.姓名,都会吃饭.睡觉等.姓名性别可以抽象为变量,吃饭睡觉可以抽象为方法,像下面一样定义个类来形容人 public ...
- 说完Pivot 今天说下Unpivot 的处理方式
上次说到,既然有Pivot 的行转列,那么肯定也有Unpivot 的列转行 .其实unpivot 处理的情况也是差不多,也是分3步走. 首先也是先演示一下unpivot 的用法 ),Mon TIME, ...