• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言fscanf和fprintf函数的用法详解(格式化读写文件)

C语言fscanf和fprintf函数的用法详解(格式化读写文件)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2022-04-30

匿名通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
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 2struct 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↙Hua 1 14 99↙Tom  2  15  90.500000Hua  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
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-28C++中函数重载实例详解
  • 2017-05-28linux下实现的2048游戏示例分享
  • 2017-05-28用C语言的泛型实现交换两个变量值
  • 2017-05-28C++ Custom Control控件向父窗体发送对应的消息
  • 2017-05-28探讨C语言的那些小秘密之断言
  • 2017-05-28C语言编程入门之程序头文件的简要解析
  • 2017-05-28socket多人聊天程序C语言版(二)
  • 2017-05-28简单分析C语言中指针数组与数组指针的区别
  • 2017-05-28C++设计模式之状态模式
  • 2017-05-28C语言之从字符数组中删除特定的字符

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • VC++实现CStdioFile写入及读取文件并自动换行的方法
    • C++ 构造双向链表的实现代码
    • C++设计模式之模板方法模式
    • Cocos2d-x学习入门之HelloWorld程序
    • 深入理解C语言内存对齐
    • 异步http listener 完全并发处理惩罚http恳求的小例子
    • C++实现一维向量旋转算法
    • 深入uCOS中全局变量的使用详解
    • C++ Assert()断言机制原理以及使用方法
    • ubuntu中打开终端的三种解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有