【c基础】之 文件及其操作
文件的打开与关闭
首先要定义一个文件指针类型,格式为 FILE *文件指针名; ;
FILE *fp; //fp就是定义的文件指针
●打开文件fopen()函数,格式: fp = fopen("文件名", "打开方式");
fp = fopen("c:\\myfile", "r"); //打开方式下文会讲到
文件名中不允许直接使用路径描述符 "\",必须用转义字符的形式 "\\"。"\\" 中第一个 "\" 是转义字符,第二个表示路径描述符。
●关闭文件fcolse()函数,格式: fclose(文件指针);
fclose(fp);
功能:正常完成关闭文件操作时fclose返回0,否则返回EOF(值为-1),表示有错误发生。
●打开文件的方式:
共有12种,由r(read), w(write), a(append), b(binary), +(read/write)五个字符组合而成。
"r", "w", "a", "r+", "w+", "a+" :这六种打开文本文件
"rb", "wb", "ab", "rb+", "wb+", "ab+" :这六种打开二进制文件
| "r" | 打开一个文本文件,可以读取文件 |
| "w" | 打开一个文本文件,可以写入文件,先将文件的长度截为0。如果该文件不存在则先创建 |
| "a" | 打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则先创建 |
| "r+" | 打开一个文本文件,可以进行更新(读取和写入),也即可以读取和写入文件 |
| "w+" | 打开一个文本文件,可以进行更新(读取和写入),如果该文件存在则首先将其长度截为0,如果该文件不存在则先创建 |
| "a+" | 打开一个文本文件,可以进行更新(读取和写入),向已有文件的尾部追加内容,如果该文件不存在则先创建;可以读取整个文件,但写入时只能追加内容。 |
| "rb", "wb", "ab", "rb+", "wb+", "ab+", "r+b", "w+b", "a+b" | 与前面的模式相似,只是使用二进制而非文本模式打开文件 |
注意:如果用"w"模式打开任意一个文件,文件内容将删除,以便程序以一个空文件开始操作。
●文件结束的判定feof()函数,格式: feof(文件指针)
这里举一个例子帮助理解:
while(!feof(fp)) //我们已在文件的末尾加上结束标志-1
{ c = fgetc(fp);
print("当到文件尾时,此段文字不显示");
}
//此段程序的含义是:当为!feof(fp)为1,从当前位置读入一个字节的数据赋给字符型变量c,指当遇到文件结束标志时,feof(fp)的值为1,feof(fp)为0,循环结束
feof()函数功能:测试文件指针所指向的文锦啊内部读写位置指针是否到达文件尾。当文件结束时返回1,否则返回0。
文件的读写
1.字符,字符串的读写
写字符函数fputc,功能:把一个字符写入此盘文件中,若输出成功,则返回输出的字符,否则返回EOF。格式:
fputc(ch, fp); //将字符ch的值输出到fp所指向的文件中
ch:要输出的字符,可以是字符常量,也可以是字符变量。
读字符函数fgetc,功能:从指定文件读入一个字符,该文件必须是以读或读写方式打开的,若读取成功返回读取的字符,否则返回EOF。格式:
ch = fgetc(fp); //读取成功返回字符赋值给ch
写字符串函数fputs,格式: fputs("字符串", 文件指针); 功能:向指定的文件写入一串字符,写入成功返回0,否则返回非0值。
fputs("Welcome to my blog", fp);
注意:fputs函数将写入文件的字符串中的空字符去掉,ptus函数将空字符换成换行字符输出。
读字符串函数,格式: fgets(字符串, n, fp); 功能:从fp指向的文件读入n-1个字符存放第一个参数中,如果遇到换行符或EOF,则结束。
fgets(str, n, fp); //str 为字符数组。从fp指向的文件读入n-1个字符存放到str数组中
注意:读入字符串后在最后加一个 '\0' 字符,fgets函数返回的返回值为字符串的首地址。
2.数据块的读写
数据块写文件函数fwrite(),格式:
fwrite(buffer, size, count, fp);
buffer:是一个指针,用来指出带输出数据的地址。
size:每次要写的字节数
count:写入多少个size大小的数据项
注意:完成写操作(fwrite())后必须关闭文件(fclose())
数据块的读文件函数fread(),格式:
fread(buffer, size, count, fp);
count:读入多少个size大小的数据项
3.格式化读/写文件函数
读文件fprintf(),格式: fprintf(文件指针,"格式控制",输出列表);
fprintf(fp,"%d, %d",a, b); //将a,b写入fp指向的文件中
注意:fprintf()函数总是将输出项在内存中的表示形式按指定的格式转换成字符串形式,再写入到指定的文件中。
写文件fscanf(),格式: fscanf(文件指针,"格式控制",地址列表);
fprintf(fp,"%d, %d",&a, &b); //将fp指向的文件中的数据读出并存放于a,b
注意:fscanf()函数从文件中读出的数据一定是按字符串形式(文本形式)存在的。
文件定位
rewind(fp);
●fseek()函数,格式: fseek(文件指针, 位移量w, 起始点s); 功能:使文件指针移到距起始点偏移w个字节处。
fseek(fp, , ); //使文件指针移到距起始点0偏移2个字节数
w:当w为正数时表示向文件尾方向移动,为负数时表示向文件头移动,为0表示不移动。
i = ftell(fp); //存放当前位置给变量i
if(i == -1L)
printf("error\n"); //若调用的函数出错(如不存在此文件),则输出ERROR
文件的检测
ferror(fp)
clearerr()函数,功能:使文件错误标志和文件结束标志置为0。格式:
clearerr(fp)
20170104完
【c基础】之 文件及其操作的更多相关文章
- delphi 基础之三 文件流操作
文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...
- python 基础之文件读操作
创建一个名为‘尘曦’的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...
- Python基础灬文件常用操作
文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...
- C语言基础 (12) 文件的操作 FILE
课程回顾 结构体基本操作: 结构体类型的定义 // struct为关键字 Stu为自定义标识符 // struct Stu才是结构体类型 // 结构体成员不能在定义类型时赋值 struct Stu { ...
- node基础-文件系统-文件写操作
文件操作频率最高的就是读跟写.nodejs的文件的读取API在<node基础-文件系统-读取文件>里已经简单介绍过,本文就简单介绍下nodejs的文件写API. nodejs的文件操作均提 ...
- python3基础之文件对象操作
1.向文本文件中写入内容 s = 'Hello world\n文本文件的读取方法\n文本文件的写入方法\n' # 需要写入文件的字符串 print('显示需要写入的内容:\n{0:s}'.format ...
- day08文件操作的三步骤,基础的读,基础的写,with...open语法,文件的操作模式,文件的操作编码问题,文件的复制,游标操作
复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5 ...
- python基础(5)-文件操作
文件(file)操作 创建文件 verse.txt: 床前明月光 疑是地上霜 open(path(文件路径),mode(模式:r/r+[读],w/w+[写],a/a+[追加])):返回文件句柄(对象) ...
- Go语言基础之文件操作
本文主要介绍了Go语言中文件读写的相关操作. 文件是什么? 计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件. 打开和关闭文件 os.Open()函数能够打开一个 ...
- ndk学习之c++语言基础复习----C++容器、类型转换、异常与文件流操作
继续来复习C++,比较枯燥,但是这是扎实掌握NDK开发的必经之路,不容小觑. 容器: 容器,就是用来存放东西的盒子. 常用的数据结构包括:数组array, 链表list, 树tree, 栈stack, ...
随机推荐
- camstar --飞达上料
业务场景:某工厂的SMT车间接到生产PCB(3151502),数量1000片.如果实现飞达进行上料,并在贴片机工作时,系统自动进行物料消耗.3151502的BOM为1107790,1107792,11 ...
- C# new和override的区别
浅析C# new和override的区别 C#中new和override是继承中经常用到的两个关键字,但是往往有时候容易把这两个关键字的作用搞混淆. new C# new关键字表示隐藏,是指加上new ...
- java--面向对象编程
instanceof的用法 静态绑定,即早期绑定,首先找父类 动态绑定,即运行时绑定,new谁找谁 Object o1 = null; //正确的语法,null也是一种特殊的引用数据类型 object ...
- Grunt构建工具插件篇——之less工具3和watch配合自动化编译
grunt less转换成css速度慢 而且页面会全部刷新? 最近遇到了个问题,grunt里用less,当修改完.less里面的样式,对应 的.css文件会好几秒才修改,然后浏览器上显示也会耗时好几秒 ...
- reg 正则
//转化为camel形式 var text = 'border-color-base'; text.replace(/-(\w{1})/g, function (match, chr1) { retu ...
- //@sourceURL=filename.js
在 console 中输入代码的最后一行加上 //@ sourceURL=filename.js, 会在 Scripts 面板中有个叫 filename.js 的文件, 然后他就和外部 js 文件一样 ...
- iOS 之 NSString 去除前后空格和回车键
NSString *string = @" spaces in front and at the end "; NSString *trimmedString = [string ...
- zepto.js 处理Touch事件
处 理Touch事件能让你了解到用户的每一根手指的位置,在touch事件触发的时候产生,可以通过touch event handler的event对象取到,如果基于zepto.js开发,一般是通过ev ...
- Ajax Not Found,asp.net mvc 中
x前台代码: <script type="text/javascript"> $(document).ready(function () { $("#btnS ...
- main函数执行前、后再执行的代码
一.main结束 不代表整个进程结束 (1)全局对象的构造函数会在main 函数之前执行, 全局对象的析构函数会在main函数之后执行: 用atexit注册的函数 ...