- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.5.4 格式化读/写函数:fscanf()/fprintf() 格式化读写函数fscanf()和fprintf()与前面使用的函数scanf()和printf()的功能相似,都是格式化读写函数。 两者的区别在于fscanf ()函数和fprintf()函数的读写对象不是键盘和显示器,而是磁盘文件。 这两个函数的使用格式为: fscanf(文件指针, 格式字符串, 输入列表); fprintf(文件指针, 格式字符串, 输出列表); 设有如下类型及变量定义: typedef struct { /* 定义学生类型 */ int num; /* 学号 */ char name[18]; /* 姓名 */ char sex[3]; /* 性别 */ int age; /* 年龄 */ } StudentType; StudentType student; 则向文件fp读写一个学生信息可使用如下语句: fscanf(fp, %d %s %s %d, student.num, student.name, student.sex, student.age); fprintf(fp, %d %s %s %d\n, student.num, student.name, student.sex, student.age); 例8.6 用fscanf()和fprintf()函数改写例8.5的问题。 与例10.5相比,本程序中fscanf()和fprintf()函数每次只能读写一个结构变量元素,而不能一次读写一组数据,在其它方面完全相同。 具体程序如下: /* 文件路径名:e8_6\main.c */ #include stdlib.h /* 包含库函数system()所需要的信息 */ #include alg.h /* 用户函数头文件 */ int main(void) /* 主函数main() */ { char fileName[80]; /* 文件名 */ printf(输入文件名:); /* 提示信息 */ gets(fileName); /* 输入文件名 */ Save(fileName); /* 输入学生信息,并存放到文件中 */ Display(fileName); /* 显示学生信息 */ system(PAUSE); /* 输出系统提示信息 */ return 0; /* 返回值0, 返回操作系统 */ } /* 文件路径名:e8_6\alg.h */ #ifndef __ALG_H__ /* 如果没声明标识符__ALG_H__ */ #define __ALG_H__ /* 那么声明标识符__ALG_H__ */ #include stdio.h /* 标准输入/出头文件 */ #include stdlib.h /* 包含库函数system()所需要的信息 */ #define N 2 /* 学生人数 */ typedef struct { /* 定义学生类型 */ int num; /* 学号 */ char name[18]; /* 姓名 */ char sex[3]; /* 性别 */ int age; /* 年龄 */ } StudentType; void Save(char fileName[]); /* 输入学生信息,并存放到文件中 */ void Display(char fileName[]); /* 显示学生信息 */ #endif /* 文件路径名:e8_6\alg.c */ #include alg.h /* 用户函数头文件 */ void Save(char fileName[]) /* 输入学生信息,并存放到文件中 */ { StudentType student; /* 学生结构变量 */ FILE *fp; /* 文件指针 */ int i; if ((fp = fopen(fileName, wb)) == NULL) { /* 打开文件 */ printf(打开文件%s失败!\n, fileName);/* 错误信息 */ system(PAUSE); /* 输出系统提示信息 */ exit(1); /* 退出程序 */ } …… …… printf(输入学生信息\n); /* 输入提示 */ printf(学号\t姓名\t性别\t年龄\n); /* 输入提示 */ for (i = 0; i N; i++) { /* 输入学生信息,并存入到文件中 */ scanf(%d%s%s%d, student.num,
文档评论(0)