C语言文件管理:
1、 哪些可以放在头文件中,哪些不可以放在头文件中
A) 函数声明可以放在头文件中,函数定义(函数体)不可以放在头文件中
例如:Int Find();
B) 全局变量声明(extern)可以放在头文件中,函数定义(函数体)不可以放在头文件中
例如:extern struct SStud g_stud[100];
C) 常量声明(定义)可以放在头文件中
例如:#define COUNT sizeof(g_stud[100])/sizeof(g_stud[0])
D) 结构体声明(定义)可以放在头文件中
例如:struct SStud
{
IntnNumb;
CharsName[20];
};
2、 C语言文件操作
A) 文件的目的是保存进程中的数据,下次启动进程时还要使用
B) 学习操作,主要学习4大主要函数:
① 、打开文件函数:fopen
② 、关闭文件函数:fclose、
③ 、读文件函数:fwrite
④ 、写文件函数:fwrite
⑤ 、其他fputc,fputc,fprintf,rewind等等函数可以次要了解,头文件都是stdio.h
3、 fopen函数:建立一个FILE*指针,连接到文件上
函数原型:FILE * fopen(const char *path , const char *mode);
参数:filename:指定绝对路径或者相对路径的文件名
Mode:分别指定
“r”:当文件存在返回有效的文件指针,当文件不存在返回空指针
“w”:如果文件不存在,创建文件,如果文件存在,清空该文件并重写内容,失败的原因有:①文件的路径有问题②文件只读③文件被占用④windows磁盘安全限制写入
“a”:如果文件不存在,创建文件,如果文件存在,不清空原有内容,在原有内容后面
“w”和”a”都会返回空指针。
返回值:FILE*文件指针类型,可以认为是驾驶员的手柄,把文件操作比作对汽车的驾驶
4、 fclose:断开FILE*文件指针和文件的链接
a)不能带入空指针
5、fwrite和fread函数
a)fwrite:调用fwrite必须是使用“w”或者“a”模式打开
memcpy是将一段缓冲区的内容复制到另外一段缓冲区上
fwrite是将一段缓冲区的内容复制到磁盘文件上
fread是将磁盘上的内容读取到一段缓冲区上
6、 b)扩展模式:
t:缺省时text模式,不推荐使用
b:二进制模式,推荐使用
c)其他读写模式:
“r+”:可读可写,主要特征和失败原因同r模式
“w+”:可读可写,主要特征和失败原因同w模式
“a+”:可读可写,主要特征和失败原因同a模式
7、其他的f族函数:
a)getc :getc等价于fread(&c,1,sizeof(char),fp)
b)putc(fputc):等价于fwrite(&c,1,sizeof(char),fp)
c) fputs:等价于fwrite(s,strlen(s),fp)
d) fgets: 用fwrite()不容易实现
8、文件寻址函数
a)ftell:告诉当前文件指针距离头部的位置(字节)
b)fseek:将文件指针放置到距离原点的某个距离上
三种原点:文件头,文件尾,当前位置
附录:如何查找一个文件是否存在?
fopen(…,”r”)返回值是NULL代表不存在