C语言fscanf和fprintf函数的用法详解

C语言fscanf和fprintf函数的用法详解fscanf()和fprintf()函数与前面使用的scanf()和printf()功能相似,都是格式化读写函数,两者的区别在于fscanf()和fprintf()的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的原型为:intfscanf(FILE*fp,char*format,…);intfprintf(FILE*fp,char…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。

这两个函数的原型为:

int fscanf ( FILE *fp, char * format, ... );
int fprintf ( FILE *fp, char * format, ... );

fp 为文件指针,format 为格式控制字符串,… 表示参数列表。与 scanf() 和 printf() 相比,它们仅仅多了一个 fp 参数。例如:

FILE *fp;
int i, j;
char *str, ch;
fscanf(fp, "%d %s", &i, str);
fprintf(fp,"%d %c", j, ch);

fprintf() 返回成功写入的字符的个数,失败则返回负数。fscanf() 返回参数列表中被成功赋值的参数个数。

示例 用 fscanf 和 fprintf 函数来完成对学生信息的读写。

#include<stdio.h>
#define N 2
struct stu{ 

char name[10];
int num;
int age;
float score;
} boya[N], boyb[N], *pa, *pb;
int main(){ 

FILE *fp;
int i;
pa=boya;
pb=boyb;
if( (fp=fopen("D:\\demo.txt","wt+")) == NULL ){ 

puts("Fail to open file!");
exit(0);
}
//从键盘读入数据,保存到boya
printf("Input data:\n");
for(i=0; i<N; i++,pa++){ 

scanf("%s %d %d %f", pa->name, &pa->num, &pa->age, &pa->score);   
}
pa = boya;
//将boya中的数据写入到文件
for(i=0; i<N; i++,pa++){ 

fprintf(fp,"%s %d %d %f\n", pa->name, pa->num, pa->age, pa->score);   
}
//重置文件指针
rewind(fp);
//从文件中读取数据,保存到boyb
for(i=0; i<N; i++,pb++){ 

fscanf(fp, "%s %d %d %f\n", pb->name, &pb->num, &pb->age, &pb->score);
}
pb=boyb;
//将boyb中的数据输出到显示器
for(i=0; i<N; i++,pb++){ 

printf("%s %d %d %f\n", pb->name, pb->num, pb->age, pb->score);
}
fclose(fp);
return 0;
}

运行结果:

Input data:
Tom 2 15 90.5↙
Li 1 14 99↙
Tom  2  15  90.500000
Li 1  14  99.000000

打开 D:\demo.txt,发现文件的内容是可以阅读的,格式非常清晰。用 fprintf() 和 fscanf() 函数读写配置文件、日志文件会非常方便,不但程序能够识别,用户也可以看懂,可以手动修改。

如果将 fp 设置为 stdin,那么 fscanf() 函数将会从键盘读取数据,与 scanf 的作用相同;设置为 stdout,那么 fprintf() 函数将会向显示器输出内容,与 printf 的作用相同。例如:

#include<stdio.h>
int main(){ 

int a, b, sum;
fprintf(stdout, "Input two numbers: ");
fscanf(stdin, "%d %d", &a, &b);
sum = a + b;
fprintf(stdout, "sum=%d\n", sum);
return 0;
}

运行结果:

Input two numbers: 10 20↙
sum=30
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180342.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows Phone中文开发资源集中营

    Windows Phone中文开发资源集中营1.微软官方一站式中文开发社区:http://msdn.microsoft.com/zh-cn/windowsphone包括最新活动信息共享在线免费开发视频开发工具下载2.微软(英文)开发资料MSDN:http://msdn.microsoft.com/en-us/library/ff402535(v=VS.92).aspx   微软…

  • spring boot 集成redis版本说明

    springboot集成redis版本说明官网文档:https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/当前版本是2.0.3(目前官网的当前版本也是2.0.3{2018-06-25})1.5.X版本redis依赖如下:&lt;dependency&gt;&lt;gro…

  • spring spel表达式_Substring

    spring spel表达式_Substring1.什么是SpEL表达式SpEL表达式语言是一种表达式语言,是一种可以与一个基于spring的应用程序中的运行时对象交互的东西。有点类似于ognl表达式。总得来说SpEL表达式是一种简化开发的表达式,通过使用表达式来简化开发,减少一些逻辑、配置的编写。2.使用XML方式实现SpEL表达式

  • sklearn常用聚类算法模型【KMeans、DBSCAN】实践

    sklearn常用聚类算法模型【KMeans、DBSCAN】实践聚类算法是很重要的一类算法模型,在实际的应用实践中是会经常使用到的,最近的工作类型中大多偏向于有监督学习类型模型的使用,而对于无监督算法模型的使用则使用得相对少了很多,今天就简单的回归一下聚类算法模型,主要是KMeans模型和DBSACN模型的使用。这两种模型可以说是聚类算法领域里面很具有代表性的算法了,前者是基于样本之间距离的聚类,后者是基于样本集密度的聚类。殊途同…

  • C C T V 1_win10安装vs2019系统不支持

    C C T V 1_win10安装vs2019系统不支持EmguCv是在.net平台上对OpenCV的封装,便于OpenCV的跨平台开发使用。

  • 虚拟存储容量_虚存空间的最大容量

    虚拟存储容量_虚存空间的最大容量虚拟存储的容量受到下列哪一个因素的限制影响最大?DA. 磁盘空间大小B. 物理内存大小C. 数据存放的实际地址D. 计算机地址位数分析:这题应该是计算机地址位数才对。从影响上讲:虚存容量=min(2^计算机位数,内存+外存);  根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号