您的位置:首页 > 编程语言 > C语言/C++

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(文件指针);
作用:从指定文件读取一个字符
例子:



注意:
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,可以用这个来判断是否读取成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息