fscanf和fprintf和fwrite函数详解
【摘要】 大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN C/C++领域新星创作者https://blog.csdn.net/chuxinchangcun?type=blog掘金LV3用户 https://juejin.cn/us...
大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN C/C++领域新星创作者https://blog.csdn.net/chuxinchangcun?type=blog
- 掘金LV3用户 https://juejin.cn/user/1381426159953960
- 阿里云社区专家博主,星级博主,技术博主 https://developer.aliyun.com/profile/expert/5lkdbuggiiuhc
- 华为云云享专家 https://bbs.huaweicloud.com/community/myhomepage
fprintf-格式化写入函数
fprintf
printf
fprintf 和printf格式一致,只不过fprintf多了一个文件指针的参数
例1
struct S
{
int n ;
double d;
};
int main()
{
struct S s = {100,3.14};//把s的数据写到文件中
//打开文件
FILE* pf = fopen("data.txt","w");
if(NULL == pf)
{
perror("fopen");
return -1;
}
//写文件
fprintf(pf,"%d %lf",s.n,s.d);
//关闭文件
fclose(pf);
return 0;
}
写入多个数据
struct S
{
char name[20];
int age;
};
int main()
{
struct S s[3] = { {"Mango",19},{"Lemon",20},{"Orange",21} };
//打开文件
FILE* pf = fopen("data.txt", "w");
if (NULL == pf)
{
perror("fopen");
return -1;
}
//格式化写入
int i = 0;
for (i = 0; i < 3; i++)
{
fprintf(pf, "%s %d", s[i].name, s[i].age);//把结构体三个数据写到文件中
}
fclose(pf);
pf = NULL;
}
fscanf - 格式化读取数据
fscanf
scanf
scanf和fscanf的区别:fscanf的参数多了一个文件指针
上面fprintf写入数据到txt文件中后,使用fscanf读取出来
struct S
{
int n ;
double d;
};
int main()
{
struct S s ={0};
//打开文件
FILE* pf = fopen("data.txt","r");
if(NULL == pf)
{
perror("fopen");
return -1;
}
//读文件
fscanf(pf,"%d %lf",&s.n,&s.d);
//看是否读取成功
printf("%d %lf",s.n,s.d);
//关闭文件
fclose(pf);
return 0;
}
fwrite - 以二进制形式写入
- 第一个参数:要被写入的数据的地址
- 第二个参数:要被写入的数据的大小(字节数)
- 第三个参数:要写入的个数
- 第四个参数:文件指针
- 以二进制形式写入->所以打开文件方式为:wb
- 写count个大小为size的数据到流中
例子1
struct S
{
int n ;
double d;
char name[10];
};
int main()
{
struct S s = {100,3.14,"zhangsan"};
//以二进制形式打开文件
FILE* pf = fopen("data.txt","wb");
if(NULL == pf)
{
perror("fopen");
return -1;
}
//写文件-二进制形式写
fwrite(&s,sizeof(s),1,pf);
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
结果:
这是以二进制形式写进去,所以看不懂,要使用二进制形式读取出来
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)