C语言查缺补漏(十三)文件操作

忽略点十三:文件操作

​ 我们要想对文件进行读取或写入,需要有一个能够访问到该文件的文件指针(FILE类型),这样我们就能通过文件指针对文件进行操作啦!

FILE *fp;				//声明文件指针
fp = fopen(文件路径, 访问模式);	//指向文件,第一个参数为字符串

​ 关于访问模式: ——只读:“r”

​ ——只写(覆盖): “w”

​ —— 文件末尾追加: “a”

​ ——可读可写: “r+”或“w+”

​ ——二进制文件:“b”

​ ——文本文件:“t”

​ //访问模式可以叠加,例如"rb"代表读取二进制文件

​ 之后我们就可以对文件进行操作啦(如fgetc()函数(读取)和fputc()函数(写入))

​ ——关于读取:文件指针指向文件后,通过fgetc(fp);获得当前指针之后位置的一个字符,每获得一个字符指针就会自动向后移动一个字符(如果到达文件尾部则会返回EOF

​ ——关于写入:通过fputc(‘字符’, fp);方式将字符写入到与fp关联的文件中

​ 文件指针不再使用后需断开关联,格式为:

fclose(fp);	//若不加此句,程序正常结束后系统会自动为打开的文件调用fclose

​ 举个栗子:

//省略代码
FILE *p1 = fopen("路径1", "r");
FILE *p2 = fopen("路径2", "w");
char c;
while ((c = fgetc(p1)) != EOF) {	//把一个文件内容复制到另一个文件
    fputc(c, p2);
}
fclose(p1);
fclose(p2);

注意!!!!

​ 在给文件指针命名时,不能使用 stdinstdoutstderr 这三个名字,因为这三个名字是系统内置用于标准输入、标准输出、标准错误的文件指针名

​ 我们可通过 fgetc(stdin); 获得来自标准输入的字符

​ 通过 fputc(ch, stdout);ch 字符输出到标准输出

​ 通过 fputc(ch, stderr);ch 字符输出到标准错误

​ 除fgetcfputc外,我们还可以使用fscanffprintf函数

​ 我们可以使用fscanf通过文件指针读取:

​ 也可以使用fprintf通过文件指针写出

fscanf(p1, "%c", &a);		//通过文件指针p1获取字符并存储到a中
fprintf(p2, "%c", a);		//通过文件指针p2将字符a写入文件中

​ 这两个函数是不是感觉有点眼熟?对!大家熟悉的scanfprintf 和它们长得很像,那它们之间有关系吗?

​ 答案是有的。scanf可以看作是 fscanf的特例

printf可以看作是fprintf 的特例

​ 至于为什么,看下面的代码:

fscanf(stdin, "%c", &a);	//等价于下一行
scanf("%c", &a);	

fprintf(stdout, "%c", &a);	//等价于下一行
printf("%c", a);

​ 嗯嗯,上面也说啦,stdin和stdout的实质也是文件指针,分别代表从控制台获取,输出到控制台。

​ 当然啦,stdin和stdout也可以通过fclose关掉,大家可以试一下关掉后还能进行scanf和printf嘛~ 赶紧跑路hahaha

转载请注明出处!!!

如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢!

猜你喜欢

转载自blog.csdn.net/Ivan_zcy/article/details/82952818