网站设计所遵循的原则,网站外链建设与文章发布规范,机械网站建设中心,seo公司 彼亿营销C语言中操作文件之前必须先打开文件#xff1b;所谓“打开文件”#xff0c;就是让程序和文件建立连接的过程。
打开文件之后#xff0c;程序可以得到文件的相关信息#xff0c;例如大小、类型、权限、创建者、更新时间等。在后续读写文件的过程中#xff0c;程序还可以记…C语言中操作文件之前必须先打开文件所谓“打开文件”就是让程序和文件建立连接的过程。
打开文件之后程序可以得到文件的相关信息例如大小、类型、权限、创建者、更新时间等。在后续读写文件的过程中程序还可以记录当前读写到了哪个位置下次可以在此基础上继续操作。 标准输入文件 stdin表示键盘、标准输出文件 stdout表示显示器、标准错误文件 stderr表示显示器是由系统打开的可直接使用。使用 stdio.h 头文件中的 fopen() 函数即可打开文件它的用法为
FILE *fopen(char *filename, char *mode);filename为文件名包括文件路径mode为打开方式它们都是字符串。
fopen() 函数的返回值
fopen() 会获取文件信息包括文件名、文件状态、当前读写位置等并将这些信息保存到一个 FILE 类型的结构体变量中然后将该变量的地址返回。
FILE 是 stdio.h 头文件中的一个结构体它专门用来保存文件信息。
如果希望接收 fopen() 的返回值就需要定义一个 FILE 类型的指针。例如
FILE *fp fopen(demo.txt, r);表示以“只读”方式打开当前目录下的 demo.txt 文件并使 fp 指向该文件这样就可以通过 fp 来操作 demo.txt 了。fp 通常被称为文件指针。
再来看一个例子
FILE *fp fopen(D:\\demo.txt,rb);表示以二进制方式打开 D 盘下的 demo.txt 文件允许读和写。
判断文件是否打开成功
打开文件出错时fopen() 将返回一个空指针也就是 NULL我们可以利用这一点来判断文件是否打开成功请看下面的代码
FILE *fp;
if( (fpfopen(D:\\demo.txt,rb) NULL ){printf(Fail to open file!\n);exit(0); //退出程序结束程序
}我们通过判断 fopen() 的返回值是否和 NULL 相等来判断是否打开失败如果 fopen() 的返回值为 NULL那么 fp 的值也为 NULL此时 if 的判断条件成立表示文件打开失败。
在打开文件时一定要判断文件是否打开成功因为一旦打开失败后续操作就都没法进行了往往以“结束程序”告终。
fopen() 函数的打开方式
不同的操作需要不同的文件权限。例如只想读取文件中的数据的话“只读”权限就够了既想读取又想写入数据的话“读写”权限就是必须的了。
另外文件也有不同的类型按照数据的存储方式可以分为二进制文件和文本文件它们的操作细节是不同的。
在调用 fopen() 函数时这些信息都必须提供称为“文件打开方式”。最基本的文件打开方式有以下几种
调用 fopen() 函数时必须指明读写权限但是可以不指明读写方式此时默认为t。
读写权限和读写方式可以组合使用但是必须将读写方式放在读写权限的中间或者尾部换句话说不能将读写方式放在读写权限的开头。例如 将读写方式放在读写权限的末尾rb、wt、ab、rb、wt、at将读写方式放在读写权限的中间rb、wt、ab整体来说文件打开方式由 r、w、a、t、b、 六个字符拼成各字符的含义是 r(read)读w(write)写a(append)追加t(text)文本文件b(banary)二进制文件读和写关闭文件
文件一旦使用完毕应该用 fclose() 函数把文件关闭以释放相关资源避免数据丢失。fclose() 的用法为
int fclose(FILE *fp);fp 为文件指针。例如
fclose(fp);文件正常关闭时fclose() 的返回值为0如果返回非零值则表示有错误发生。
实例演示 最后我们通过一段完整的代码来演示 fopen 函数的用法这个例子会一行一行地读取文本文件的所有内容
#include stdio.h
#include stdlib.h#define N 100int main() {FILE *fp;char str[N 1];//判断文件是否打开失败if ( (fp fopen(d:\\demo.txt, rt)) NULL ) {puts(Fail to open file!);exit(0);}//循环读取文件的每一行数据while( fgets(str, N, fp) ! NULL ) {printf(%s, str);}//操作结束后关闭文件fclose(fp);return 0;
}