关于fscanf()和fprintf()的理解
看了半天关于fscanf的使用,终于好像明白了一些!
开始一直不明白fscanf()和fprintf()哪个是对文件读数据哪个是写数据,现在终于快弄清楚了。
fscanf():
原型:int fscanf(FILE*stream,const char*format,[argument]...);
功能:根据数据格式(format)从输入流(stream)中写入数据(argument),遇到空格和换行时结束。
(刚开始特别不理解到底从哪读,写到哪,现在我的理解是从文件流中读取数据放入自己定义的变量中,也就是从文件中读数据)
因此在定义文件类型指针fp的时候,文件的打开模式mode应为r(读),FILE*fp=fopen("726.txt","r")。
写了一段代码就明白了。
首先新建一个文本文件726.txt,在这个文件中输入1 2 3
#include<stdio.h>
#include<assert.h>
int main()
{
FILE*fp=fopen("726.txt","r"); //对"726.txt"进行读操作
assert(fp); //断言
if(fp){
int a[3]; //定义一个数组,存放从文件流中读取到的数据
int i=0;
for(i=0;i<3;i++)
{
fscanf(fp,"%d",&a[i]);
}
for(i=0;i<3;i++) //输出打印数组中的元素
{
printf("%d ",a[i]);
}
fclose(fp); //关闭文件流
}
return 0;
}
运行这段代码的结果:
fprintf()
原型:int fprintf(FILE*stream,const char*format,...);
功能:根据指定的格式foemat发送信息到stream指定的文件中,因此fprintf()可以使得信息输出到指定的文件中。
(就是把自己想写的东西写到指定的文件中)
所以在定义文件类型指针的时候,mode是w(写),也就是FILE*fp=fopen("726.txt","w")
代码如下,把一个字符串写到文件中
#include<stdio.h>
#include<assert.h>
int main()
{
char name[20]="Alice";
FILE*fp=fopen("726.txt","w");
assert(fp);
if(fp)
{
fprintf(fp,"good job ,%s\n",name);
}
}
结果如下:
哈哈!
这就是我对fscanf()和fprintf()的理解了,如果有什么错误,欢迎指出。
小白仍需努力。