《C语言程序设计(第四版)》阅读心得(四 文件操作)
第10章 对文件的输入输出
函数名 |
调用形式 |
功能 |
fopen |
fopen(“a1”,”r”); |
打开一个文件 |
fclose |
fclose( fp ); |
关闭数据文件 |
fgetc |
fgetc( fp ); |
从fp指向的文件读入一个字符 |
fputc |
fputc( ch,fp); |
把字符ch写到文件指针变量fp所指向的文件中 |
fgets |
fgets(str,n,fp); |
从fp所指向的文件中读入一个长度为n-1的字符串,并在最后加一个’\0’字符,然后存放到字符数组str中 如果在读完n-1一个字符之前遇到换行符’\n’或文件结束符EOf,读入即结束,但将所遇到的’\n’也读入 |
fputs |
fputs( str fp); fputs( “China”,fp); |
把str所指向的字符串写到fp所指向的文件中 |
fscanf |
fcanf ( fp,”%d”,&i); |
从fp所指向的文件中读取一个整数送到整型变量i |
fprintf |
fprintf( fp,”%d”,i) |
将i按%d的格式输出到fp指向的文件中 |
fread |
fread( buffer,size,count,fp) Buffer是地址 |
从fp所指向的文件中buffer地址开始读取count个大小为size的字符。若成功返回count |
fwrite |
fwrite( buffer,size,count,fp) |
向fp所指向的文件中buffer地址开始存入count个大小为size的字符。若成功返回count |
rewind |
rewind( fp ) |
使文件位置标记指向文件开头 |
fseek |
fseek( fp, xxL,0) |
0表示文件开始位置 1表示文件当前位置 2表示文件末尾位置 位移量是long型,不要忘记用L |
1、打开与关闭文件
fopen( 文件名,使用文件方式);
常用下面的方法打开和关闭一个文件
- FILE *fp; //指向文件型数据的指针变量
- if( (fp = fopen("file1","r") )==NULL)
- {
- printf(" Cannot open!");
- exit(); //终止程序
- }
- fclose (fp); //关闭数据文件
2、顺序读写数据文件
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- FILE *fp;
- char ch,filename[];
- scanf("%s",filename);
- if( (fp=fopen(filename,"w"))==NULL)
- {
- printf("打开失败\n");
- exit();
- }
- ch = getchar(); //接收最后的回车符
- ch = getchar(); //接收第一个字符
- while( ch!='#') //输入#循环结束
- {
- fputc(ch,fp);
- putchar(ch);
- ch = getchar();
- }
- fclose(fp);
- return ;
- }
3、随机读写数据文件
- #include <stdio.h>
- #include <stdlib.h>
- #define SIZE 10
- struct Studet
- {
- char name[];
- int num;
- int age;
- }stud[SIZE];
- void Save()
- {
- FILE *fp;
- int i;
- if( (fp=fopen("stu.dat","wb"))==NULL)
- {
- printf("Connot open\n");
- exit();
- }
- for( i=; i<SIZE; i++)
- if( fwrite( &stud[i],sizeof( struct Studet),,fp)!=)
- printf("Write Error\n");
- fclose(fp);
- }
- int main()
- {
- int i;
- for( i=; i<SIZE; i++)
- scanf("%s%d%d",stud[i].name,&stud[i].num,&stud[i].age);
- Save();
- FILE *fp;
- if( (fp=fopen("stu.dat","rb"))==NULL)
- {
- printf("Connot open\n");
- exit();
- }
- for( i=; i<; i+=)
- {
- fseek( fp, i*sizeof(struct Studet),);
- fread(&stud[i],sizeof(struct Studet),,fp);
- printf("%-10s%4d%4d\n",stud[i].name,stud[i].num,stud[i].age);
- }
- return ;
- }
大概文件操作最难也就考到这个地步了吧!
4、fseek
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
简言之:
fseek(fp,100L,0);把fp指针前移到离文件开头100字节处;
fseek(fp,100L,1);把fp指针前移到离文件当前位置100字节处;
fseek(fp,-100L,2);把fp指针后退到离文件结尾100字节处。
《C语言程序设计(第四版)》阅读心得(四 文件操作)的更多相关文章
- python(第四版阅读心得)(系统工具)(一)
本章将会讲解python常用系统工具的介绍 python中大多数系统级接口都集中在两个模块: sys 和 os 但仍有部分其他标准模块也属于这个领域 如: 常见: glob 用于文件名扩展 soc ...
- C语言的f(open)函数(文件操作/读写)
头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, ...
- <C++Primer>第四版 阅读笔记 第一部分 “基本语言”
之前阅读时没有及时总结,现在慢慢补上. 第1章 快速入门 main 函数在很多方面都比较特别,其中最重要的是每个C++程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显示调用的函数 ...
- C语言程序设计·谭浩强(第四版)第二章课后习题的答案,算法——程序的灵魂
C语言程序小练习 1.用C语言设计程序算出1-1/2+1/3-14+1/5...+1/99-1/100的值 #include<stdio.h> int main() { ; double ...
- C语言程序设计:现代方法阅读笔记
第二十六章 atexit函数允许用户“注册”在程序终止时要调用的函数:atexit(func); 在程序终止后,func函数会被自动调用 clock()函数可以计算程序运行时间 time函数返回当前的 ...
- C++ Primer 第四版阅读笔记
阅读笔记 初始化 变量定义指定了变量的类型和标识符,也可以为对象提供初始值.定义时指定了初始值的对象被称为是 已初始化的.C++ 支持两种初始化变量的形式:复制初始化和 直接初始化.复制初始化语法用等 ...
- <C++Primer>第四版 阅读笔记 第三部分 “类和数据抽象”
类定义了数据成员和函数成员:数据成员用于存储与该类类型的对象相关联的状态:而函数成员则负责执行赋予数据意义的操作. 第12章 类 一个类可以包含若干公有的.私有的和受保护的部分:在public部分定义 ...
- 《Android深度探索HAL与驱动开发》第四章阅读心得
Android源代码包含了很多内容,可以实现拍照.计算机.日历.相册.拨号器等功能.配置Android源代码下载环境需要如下几步: (1)创建一个用于存放下载脚本文件的目录: (2)下载repo脚 ...
- 鸟哥的LINUX私房菜基础篇第三版 阅读笔记 四 档案的文件系统的压缩和打包
1.压缩文件案的用途与技术 a.用途,简单来说,就是节约磁盘空间.如果从传输角度讲,占用宽带也会小很多(Apache就有自动压缩的功能,节省宽带资源,提升网站的输出能力) b.压缩技术 ...
- <C++Primer>第四版 阅读笔记 第四部分 “面向对象编程与泛型编程”
继承和动态绑定与数据抽象一起成为面向对象编程的基础. 模板使我们能够编写独立于具体类型的泛型类和泛型函数. 第15章 面向对象编程 面向对象编程基于三个基本概念:数据抽象.继承和动态绑定.在C++中, ...
随机推荐
- 小心我“DIR”溢出你!
转自https://blog.csdn.net/wql19881207/article/details/6300760 https://blog.csdn.net/wql19881207/articl ...
- form表单ajaxSubmit提交并验证
html: <form class="register-form" action="{:U('')}" method="post"&g ...
- Toolbar自定义布局
Toolbar如何使用想必大家清楚地很,实际开发中标题栏的样式各色各样,因此其基本样式便不能满足我们的需求,这就需要我们自定义布局.打开ToolBar源码我们发现它继承ViewGroup,这就表示我们 ...
- ubuntu 下安装redis
获取Redis 1.通过官网http://redis.io/获取稳定版源码包下载地址: 2.通过wget http://download.redis.io/releases/redis-3.0.2.t ...
- Chrome 引起的蓝屏 MULTIPLE_IRP_COMPLETE_REQUESTS (44)
如果你使用Chrome的时候出现经常性蓝屏, 可以试试这么做, 或许问题就解决了.
- (转)淘淘商城系列——SSM框架整合之Service层整合
http://blog.csdn.net/yerenyuan_pku/article/details/72721108 上文我们一起学习了Dao层的整合,本文将教大家如何整合Service层. 我们需 ...
- laravel的socialite微信登录之用户信息
要想获取完整的用户信息如下 { , "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", "nickname" ...
- Python2和Python3除法
Python2和Python3除法 Python2除法:/,//,% "/":整数相除,向下取整:浮点数相除,结果包含小数(类似1/2,想保留小数应该写成1.0/2或者1*1. ...
- COPY - 在表和文件之间拷贝数据
SYNOPSIS COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ O ...
- convertquota - 把老的配额文件转换为新的格式
总览 (SYNOPSIS) convertquota [ -ug ] filesystem 描述 (DESCRIPTION) convertquota 把老的配额文件 quota.user 和 quo ...