概述
C 文件操作
fopen()
_CRTIMP FILE * __cdecl fopen(const char *, const char *);
第一参数为文件名,第二个参数为打开模式。
打开成功,fopen返回一个结构指针地址,否则返回一个NULL。
-
如果没有指定文件路径,则默认为当前工作目录。
如:FILE * fp = fopen(“c:\temp\test.txt”, “r”);
由于反斜杠是控制字符,所以必须再加一个反斜杠 -
使用fopen()函数打开的文件会先将文件复制到缓冲区。
-
注意:所下达的读取或写入动作,都是针对缓冲区进行存取而不是磁盘,只有当使用fclose()函数关闭文件时,缓冲区中的数据才会写入磁盘。
打开模式
打开文本文件:
r:只能从文件中读数据,该文件必须先存在,否则打开失败
w:只能向文件写数据,若指定的文件不存在则创建它,如果存在则先删除它再重建一个新文件
a:向文件增加新数据(不删除原有数据),若文件不存在则打开失败,打开时位置指针移到文件末尾
r+:可读/写数据,该文件必须先存在,否则打开失败
w+:可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据
a+:可读/写数据,原来的文件不被删去,位置指针移到文件末尾
rt : 读取一个已存在的文本文件
rt+: 读写一个已存在的文本文件
打开二进制文件的模式与打开文本文件的含义是一样的,不同的是模式名称里面多一个字母’b’,以表示以二进制形式打开文件。
fclose()
_CRTIMP int __cdecl fclose(FILE *);
关闭成功返回值0,否则返回非零值。
注意: 在执行完文件的操作后,要进行“关闭文件”操作。虽然程序在结束前会自动关闭所有的打开文件,但文件打开过多会导致系统运行缓慢,这时就要自行手动关闭不再使用的文件,来提高系统整体的执行效率。
实例
FILE *fp;
fp = fopen("c:\temp\test.txt", "r");
if(fp == NULL)
printf("fail to open the file! n");
else
{
printf("The file is open! n");
fclose(fp);
}
fprintf() 和fscanf()
_CRTIMP int __cdecl fprintf(FILE *, const char *, …);
_CRTIMP int __cdecl fscanf(FILE *, const char *, …);
它们与printf和scanf函数相仿,都是格式化读写函数。不同的是:fprintf和fscanf函数的读写对象不是终端(标准输入输出),而是磁盘文件。printf函数是将内容输出到终端(屏幕),因此,fprintf就是将内容输出到磁盘文件了。
实例
#include <stdio.h>
void main()
{
FILE *fp;
int num = 10;
char name[10] = "Leeming";
char gender = 'M';
if((fp = fopen("info.txt", "w+")) == NULL)
printf("can't open the file! n");
else
fprintf(fp, "%d, %s, %c", num, name, gender); //将数据格式化输出到文件info.txt中
fscanf(fp, "%d, %s, %c", &num, name, &gender); //从文件info.txt中格式化读取数据
printf("%d, %s, %c n", num, name, gender); //格式化输出到屏幕
fclose(fp);
}
feof()
int feof(FILE *stream)
stream 是指向 FILE 对象的指针,该 FILE 对象标识了流。
当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。
参考文章:C语言详解 - 文件
最后
以上就是冷傲机器猫为你收集整理的C 文件操作C 文件操作的全部内容,希望文章能够帮你解决C 文件操作C 文件操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复