分享

C语言查缺补漏——文件操作

 山峰云绕 2018-10-13

文件操作

https://www.toutiao.com/a6611494147658351118/



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

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

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

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

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

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

——二进制文件:“b”

——文本文件:“t”

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

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

C语言查缺补漏——文件操作


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

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

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

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

举个例子:

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

undefined注意!!!!

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

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

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

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

除fgetc和fputc外,我们还可以使用fscanf和fprintf函数

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

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

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

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

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

printf可以看作是fprintf 的特例

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

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

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

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

写在最后

喜欢此篇文章或觉得这篇文章对你有帮助的读者可以点播关注或者转发,私信小编001即可获得小编自己整理的一份2018最新的C/C++资料和0基础入门教程,欢迎初学和进阶中的小伙伴

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多