当前位置:文档之家› C语言基础自学总结之十:文件操作

C语言基础自学总结之十:文件操作

C语言基础自学总结之十:文件操作
要点:
1.文件操作,就是通过程序,操作文件
2.两个方面:读,写
一.fopen 打开文件
函数原型:FILE *fopen(char *filename, char *type);int
fclose(FILE *fp);
头文件:#include<stdio.h>
是否是标准函数:是
函数功能:函数fopen:打开一个流,即:打开一个文件。

该函数有两个参数,filename是需要打开文件的文件名,type是打
开文件的方式。

函数fclose:关闭一个流,即:关闭一个
文件,并释放文件缓冲区。

fclose函数与fopen函数是相
对的两个函数。

fclose函数的参数是指向文件的指针,应
用该函数用以在程序结束之前关闭文件,并释放文件缓冲
区。

这样可以保证文件的数据不流失。

返回值:fopen:FILE类型,如果打开的文件存在,返回指向该文件的指针;如果打开的文件不存在,则在指定的目录下建立该
文件打开,并返回指向该文件的指针。

fclose:整型,有错
返回非0,否则返回0。

例子1:
#include <stdio.h>
int main(void)
{
FILE *FP=fopen("文件","打开方式");//返回值是file是一个
结构体,是一个结构体
的宏。

fclose(FP);//打开之后,用完了,就要关闭文件,fclose是跟
fopen一起使用的一个函数。

return 0;
}
二. frend 读取
fread:从流中读取字符串函数
函数原型:int fread(void *buf, int size, int count, FILE *fp);头文件:#include<stdio.h>
是否是标准函数:是
函数功能:从fp指向的文件中读取长度为size 的count个数据项,并将它输入到以buf为首地址的缓冲区中。

此时,文件指针
fp会自动增加实际读入数据的字节数,即fp指向最后读入
字符的下一个字符位置。

返回值:返回实际读入数据项的个数,即count值。

若遇到错误或文件结束返回0。

例子1:
#include <stdio.h>
int main(void)
{
FILE *FP=fopen("文件","方式”);
if(!FP){
perror("fopen");
exit(-1);//当没打开的时候就终止
}
char buf[64]={};//首先需要一个空间
fread(buf,)//fread就是把文件中的内容读到
一个空间,第一个参数是要存放
的一个任意类型的空间,第二个
参数是一次读取的单位信息长
度是多少,第三个参数是要读取
这种长度的信息一共有多少个,
第四个参数是读取那个文件。

fclose(FP);
return 0;
}
三. fwrite 写
fwrite:向文件写入数据函数
函数原型:int fwrite(void *buf, int size, int count, FILE *fp);头文件:#include<stdio.h>
是否是标准函数:是
函数功能:将buf所指向的count*size个字节的数据输出到文件指针fp所指向的文件中去。

该函数与fread相对,输出数据后,
文件指针fp自动指向输出的最后一个字符的下一个位置。

该函数常用于分批将数据块输出到文件中。

返回值:返回实际写入文件数据项个数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE *fp=fopen("./file","w");//w意思是打开时如果没有这
个文件,就会创建这个文件。

如果已经存在会将它清空,
if (!fp) {
perror("fopen");
exit(-1);
}//打不开时,报错,终止程序。

fwrite("hello\n",1,strlen("hello\n"),fp);//第一个参数写之前,必须有一个内存空间的地址,void*表示人一个
空间的首字节的地址,第二个参数是,写入的单位信息
占多少个字节(长度),第三个参数,一共要写多少个
这样的单位信息。

第四个参数是,写到哪个文件中去。

//strlen:计算字符串长度函数函数原型: int strlrn (char
*str);头文件:#include<string.h>是否是标准函数:
是函数功能:求字符串的长度,也就是求字符串str
中有多少个字符返回值:字符串str字符的个数
fclose(fp);
return 0;
}
四. 文件拷贝
例子1:
#include <stdio.h>
#include <stdlib.h>
int main(void)
//{
char buf[20];
FILE *fp=fopen("./file","r");
if (!fp) {
perror("fopen");
exit(-1);
}
FILE *fp2=fopen("./file2","w'"); if (!fp2) {
perror("fopen_2");
}
while (1) {
size_t ret=fread(buf,1,20,fp); if (ret<=0) {
break;
}
fwrite(buf,1,ret,fp2);
}
fclose(fp);
fclose(fp2);
return 0;
}。

相关主题