c语言的文件操作
2015-10-30 22:09
435 查看
文件的操作步骤
步骤:
一、打开文件
使用fopen函数打开文件,然后使用文件指针变量接受。
1、文件指针变量的声明
FILE *变量名;
注:FILE四个字都需要大写。
例:
FILE *fp;
2、fopen函数的使用:
文件指针 = fopen("文件名","文件使用方式");
函数有1个返回值
返回值的类型的事文件指针。
注意:一般对文件返回值要做一个判断指针是否为NULL,,为NULL代表没有成功打开此文件。因为如果文件不存在或者系统异常等原因可能会造成读取失败。
例
FILE *fp =fopen("a.txt", "r"); //定义文件指针
if (fp!=NULL) { //文件打开成功
//做任意操作
}else{ //文件打开失败
printf("文件读取失败!按任意键退出~");
}
函数有两个参数
1、文件名,就是要打 开的文件,其中包含文件的路径
2、文件使用方式
文件使用方式 意义
r 只能读取内容,如果文件不存在则返回为NULL(侧重读取已有文件)
w 只能写内容,如果文件存在,则删去原来的文件,重新新建一个文件覆盖,如果不存在,则建立新文件(侧重创建新文件)
a 打开一个文件,向原来文件追加内容,如果文件不存在,会自动帮我们创建文件(侧重追 加原文件,不覆盖)
r+ 与r功能一样,但是多了写入功能
w+ 与w功能一样,但是多了读取功能
a+ 与a功能一样,但是多了读取功能
t 代表以文本模式操作(windows下,以这种模式打开的文件在写入时会自动把"\n"转换为"\r/n) (默认)
b 代表以二进制模式操作(无论是哪个系统下,都不做转换操作)
例
FILE *fp = NULL; //定义文件指针
fp = fopen("a.txt", "r"); //打开文件,以只读的方式打开
或者
FILE *fp = fopen("/Users/xxxxxxxxx/Desktop/1.txt", "r");
总结:
1)t和b不单用,一般跟在操作模式后面,如 at、rt、wt、at+、rt+、wt+、ab、rb、wb、ab+、rb+、wb+
2)如果不加t或者b,则默认以t模式(文本模式)操作
3)unix(mac)、Linux系统下使用t和b无区别!
4)在末尾带+号,代表可读可写,其他的与不带+的功能一致
二、操作文件
对文件进行读取或者写入的操作。
三、关闭文件
关闭文件语法:
fclose
例:
FILE *fp =fopen("a.txt", "r"); //定义文件指针
if (fp!=NULL) {
//做N多操作
fclose(fp); //关闭文件
}
关闭文件,相当于文件的保存。还有就是避免数据的丢失和内存泄露(输入流或者输出流会一直存在)等其他异常情况
文件的操作函数
单个字符操作函数:fgetc函数和fputc函数
1、fgetc函数
语法: fgetc(文件指针);
作用:从指定文件读取一个字符
例子:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/8534f094e938f1e89909a809afba46b5)
注意:
1、在fgetc函数调用中,读取的文件必须是以读或读写方式打开的
2、在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指 针总是指向文 件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。 因此可连续多次使用 fgetc函数,读取多个字符,所每次使用fgetc时是获取的值不是文件的第一个字符
数字的读和写
3、文件末有一个结束标志叫EOF,如果读出来的是EOF,就代表文件全部读取完毕
2、fputc函数
语法:
fputc( 字符的ASCII码, 文件指针);
解释:第一个参数为想写入的字符,第二个为要为哪个文件写入
作用:写入一个字符到指定文件
例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/0f611625570773081e9bb8266b2a0007)
注意:
1、使用fputc函数后,会有一个返回值,如果写入成功,则返回被写入的那个字符对应的ASCII码数字,如果 写入失败,则返回-1,可以用这个来判断是否写入成功
4000
2、fgetc函数和fputc函数的读写是按照ASCII码来的,如果写入的是一个数字,会自动转换成对应的ASCII码字符写入到文件中
如
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/67bf0cb01bfb6f5746eda24506c5b8b8)
字符串操作函数:fgets函数和fputs函数
1、fgets函数
语法: fgets( 存放数据的字符数组,n,文件指针);
解释:第一个参数是一个字符数组,主要用来保存读取出来的字符串,
n代表要读取这个文件里 多少个字符(n是几,就读n-1个字符,然后在最后一个位置加'\0',例如传入10,则读9个字 符,第10个字符处加\0)
文件指针则是告诉系统读取哪个文件
例
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/2751148b34eee6a1e758e1cda877b6c2)
结束 feof(文件指针);
注意:
1、只能读到n-1个有效字符,因为还有一个字符帮你加'\0'
2、如果读取到换行(\n),那么会停止读取,然后把换行也读取来,并且在换行后面加\0
3、使用feof(文件指针);判断读取到末尾。如果返回的是非0的数(真)代表读取到末尾,如果返回的是0,代表没有到末尾
4、使用fgets函数后,会有一个返回值(字符指针类型),如果写入成功,则返回保存字符串的首地址,如果 写入失败,则返回0x0,可以用这个来判断是否读取成功
2、fputs函数
语法:
fputs( 要写入的字符串,文件);
解释:
第一个参数是准备要写入到文件的字符串,第二个参数写入到哪个文件
例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/ddb20ac242a272b06f001392d5cb354d)
注意:
1、使用fputs函数后,会有一个返回值,如果写入成功,则返回被写入的字符数,如果 写入失败,则返回-1,可以用这个来判断是否写入成功
分流操作文件函数:fread函数和fwrite函数
1、fread函数
语法:fread(buffer,size,count,fp);
解释:buffer: 读取出来的数据存放的首地址
size : 每次读取几个字节
count:一共读取多少个这样的字节
fp:从那个文件读取
例
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/dfcfee8eb3ccc41b6db843f90e813a06)
注意:
1、它只关心具体读的字节数,不会关心这些自己里面有没有换行
2、使用fread函数后,会有一个返回值(unsigned long 类型的),如果读取成功,则返回读取的个数,不包括空格,不是字符数是个数,如果 写入失败,则返回0,可以用这个来判断是否读取成功
2、fwrite函数
语法:fwrite(buffer,size,count,fp);
解释:buffer: 要写入的内容
size : 每次写几个字节
count:一共写多少个这样的字节
fp:写入到哪个文件
例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/40072587b076545c8cc36e02f365b1a5)
注意:
1、使用fwrite函数后,会有一个返回值(unsigned long 类型的),如果写入成功,则返回被写入的字符数,如果 写入失败,则返回0,可以用这个来判断是否写入成功
2、fwrite不要写的太大,要以实际为准,否则会写很多垃圾的二进制值进去,就打不开了
格式化字符操作文件:fprintf函数和fscanf函数
1、fprintf函数
语法:fprintf(文件指针,格式字符串,输出表列);
解释:文件指针:即代表要写入到哪个文件
格式化字符串:代表要写入的内容是何格式
输入表列:即为格式字符串里规定的占位填充
例
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/26689d423ebd40ed466a2f09e33ef59f)
注意:
1、使用fprintf函数后,会有一个返回值,如果写入成功,则返回被写入的字符数,如果 写入失败,则返回-1,可以用这个来判断是否写入成功
2、fscanf函数
语法:fscanf(文件指针,格式字符串,输入表列);
解释:文件指针:即代表要读取哪个文件
格式化字符串:代表要的内容是何格式,
输入表列:即为格式字符串里规定的占位填充
例
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/30/e2c737b6da8707537e4f0af31c01a938)
注意:
1、使用fscanf函数后,会有一个返回值,如果读取成功,则返回1,如果 读取失败,则返回-1,可以用这个来判断是否读取成功
步骤:
一、打开文件
使用fopen函数打开文件,然后使用文件指针变量接受。
1、文件指针变量的声明
FILE *变量名;
注:FILE四个字都需要大写。
例:
FILE *fp;
2、fopen函数的使用:
文件指针 = fopen("文件名","文件使用方式");
函数有1个返回值
返回值的类型的事文件指针。
注意:一般对文件返回值要做一个判断指针是否为NULL,,为NULL代表没有成功打开此文件。因为如果文件不存在或者系统异常等原因可能会造成读取失败。
例
FILE *fp =fopen("a.txt", "r"); //定义文件指针
if (fp!=NULL) { //文件打开成功
//做任意操作
}else{ //文件打开失败
printf("文件读取失败!按任意键退出~");
}
函数有两个参数
1、文件名,就是要打 开的文件,其中包含文件的路径
2、文件使用方式
文件使用方式 意义
r 只能读取内容,如果文件不存在则返回为NULL(侧重读取已有文件)
w 只能写内容,如果文件存在,则删去原来的文件,重新新建一个文件覆盖,如果不存在,则建立新文件(侧重创建新文件)
a 打开一个文件,向原来文件追加内容,如果文件不存在,会自动帮我们创建文件(侧重追 加原文件,不覆盖)
r+ 与r功能一样,但是多了写入功能
w+ 与w功能一样,但是多了读取功能
a+ 与a功能一样,但是多了读取功能
t 代表以文本模式操作(windows下,以这种模式打开的文件在写入时会自动把"\n"转换为"\r/n) (默认)
b 代表以二进制模式操作(无论是哪个系统下,都不做转换操作)
例
FILE *fp = NULL; //定义文件指针
fp = fopen("a.txt", "r"); //打开文件,以只读的方式打开
或者
FILE *fp = fopen("/Users/xxxxxxxxx/Desktop/1.txt", "r");
总结:
1)t和b不单用,一般跟在操作模式后面,如 at、rt、wt、at+、rt+、wt+、ab、rb、wb、ab+、rb+、wb+
2)如果不加t或者b,则默认以t模式(文本模式)操作
3)unix(mac)、Linux系统下使用t和b无区别!
4)在末尾带+号,代表可读可写,其他的与不带+的功能一致
二、操作文件
对文件进行读取或者写入的操作。
三、关闭文件
关闭文件语法:
fclose
例:
FILE *fp =fopen("a.txt", "r"); //定义文件指针
if (fp!=NULL) {
//做N多操作
fclose(fp); //关闭文件
}
关闭文件,相当于文件的保存。还有就是避免数据的丢失和内存泄露(输入流或者输出流会一直存在)等其他异常情况
文件的操作函数
单个字符操作函数:fgetc函数和fputc函数
1、fgetc函数
语法: fgetc(文件指针);
作用:从指定文件读取一个字符
例子:
注意:
1、在fgetc函数调用中,读取的文件必须是以读或读写方式打开的
2、在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指 针总是指向文 件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。 因此可连续多次使用 fgetc函数,读取多个字符,所每次使用fgetc时是获取的值不是文件的第一个字符
数字的读和写
3、文件末有一个结束标志叫EOF,如果读出来的是EOF,就代表文件全部读取完毕
2、fputc函数
语法:
fputc( 字符的ASCII码, 文件指针);
解释:第一个参数为想写入的字符,第二个为要为哪个文件写入
作用:写入一个字符到指定文件
例:
注意:
1、使用fputc函数后,会有一个返回值,如果写入成功,则返回被写入的那个字符对应的ASCII码数字,如果 写入失败,则返回-1,可以用这个来判断是否写入成功
4000
2、fgetc函数和fputc函数的读写是按照ASCII码来的,如果写入的是一个数字,会自动转换成对应的ASCII码字符写入到文件中
如
字符串操作函数:fgets函数和fputs函数
1、fgets函数
语法: fgets( 存放数据的字符数组,n,文件指针);
解释:第一个参数是一个字符数组,主要用来保存读取出来的字符串,
n代表要读取这个文件里 多少个字符(n是几,就读n-1个字符,然后在最后一个位置加'\0',例如传入10,则读9个字 符,第10个字符处加\0)
文件指针则是告诉系统读取哪个文件
例
结束 feof(文件指针);
注意:
1、只能读到n-1个有效字符,因为还有一个字符帮你加'\0'
2、如果读取到换行(\n),那么会停止读取,然后把换行也读取来,并且在换行后面加\0
3、使用feof(文件指针);判断读取到末尾。如果返回的是非0的数(真)代表读取到末尾,如果返回的是0,代表没有到末尾
4、使用fgets函数后,会有一个返回值(字符指针类型),如果写入成功,则返回保存字符串的首地址,如果 写入失败,则返回0x0,可以用这个来判断是否读取成功
2、fputs函数
语法:
fputs( 要写入的字符串,文件);
解释:
第一个参数是准备要写入到文件的字符串,第二个参数写入到哪个文件
例:
注意:
1、使用fputs函数后,会有一个返回值,如果写入成功,则返回被写入的字符数,如果 写入失败,则返回-1,可以用这个来判断是否写入成功
分流操作文件函数:fread函数和fwrite函数
1、fread函数
语法:fread(buffer,size,count,fp);
解释:buffer: 读取出来的数据存放的首地址
size : 每次读取几个字节
count:一共读取多少个这样的字节
fp:从那个文件读取
例
注意:
1、它只关心具体读的字节数,不会关心这些自己里面有没有换行
2、使用fread函数后,会有一个返回值(unsigned long 类型的),如果读取成功,则返回读取的个数,不包括空格,不是字符数是个数,如果 写入失败,则返回0,可以用这个来判断是否读取成功
2、fwrite函数
语法:fwrite(buffer,size,count,fp);
解释:buffer: 要写入的内容
size : 每次写几个字节
count:一共写多少个这样的字节
fp:写入到哪个文件
例:
注意:
1、使用fwrite函数后,会有一个返回值(unsigned long 类型的),如果写入成功,则返回被写入的字符数,如果 写入失败,则返回0,可以用这个来判断是否写入成功
2、fwrite不要写的太大,要以实际为准,否则会写很多垃圾的二进制值进去,就打不开了
格式化字符操作文件:fprintf函数和fscanf函数
1、fprintf函数
语法:fprintf(文件指针,格式字符串,输出表列);
解释:文件指针:即代表要写入到哪个文件
格式化字符串:代表要写入的内容是何格式
输入表列:即为格式字符串里规定的占位填充
例
注意:
1、使用fprintf函数后,会有一个返回值,如果写入成功,则返回被写入的字符数,如果 写入失败,则返回-1,可以用这个来判断是否写入成功
2、fscanf函数
语法:fscanf(文件指针,格式字符串,输入表列);
解释:文件指针:即代表要读取哪个文件
格式化字符串:代表要的内容是何格式,
输入表列:即为格式字符串里规定的占位填充
例
注意:
1、使用fscanf函数后,会有一个返回值,如果读取成功,则返回1,如果 读取失败,则返回-1,可以用这个来判断是否读取成功
相关文章推荐
- 完美解决MSSQL"以前的某个程序安装已在安装计算机上创建挂起的文件操作"
- 简单对比C语言中的fputs()函数和fputc()函数
- c#文件操作示例带详细注释
- 基于java file 文件操作operate file of java的应用
- asp.net XML文件操作实现代码
- php笔记之常用文件操作
- Python 文件操作技巧(File operation) 实例代码分析
- Perl学习笔记之文件操作
- perl几个文件操作例子
- perl 文件操作总结
- Node.js文件操作详解
- JavaScript中读取和保存文件实例
- C语言文件操作函数freopen详细解析
- c语言程序设计文件操作方法示例(CreateFile和fopen)
- python文件和目录操作函数小结
- PHP常用技术文之文件操作和目录操作总结
- 基于PHP文件操作的详细诠释
- PHP文件操作方法汇总
- PHP中fwrite与file_put_contents性能测试代码
- Java I/O技术之文件操作详解