当初大家入门学习C语言的时候,面对一个黑黑的命令行界面,仅有的交互方法只有printf/scanf这两个函数作为输入输出。但是,大家知道吗?这两个函数后面还有很多兄弟姐妹。那就是C语言的格式化输入输出函数,这些函数就定义在我们熟悉的stdio.h头文件中。

我们先来简单看一下他们的函数原型吧。

int      fprintf ( FILE * stream, const char * format, ... );int      fscanf ( FILE * stream, const char * format, ... );int      printf(const char *, ...);int      scanf(const char *, ...);int      sprintf(char *, const char *, ...);int      sscanf(const char *, const char *, int ...);int      vfprintf(FILE *, const char *, va_list);int      vprintf(const char *, va_list);int      vsprintf(char *, const char *, va_list);

在不同的编译器和操作系统中,所提供的这一系列函数可能会和我在这里所列出来的不太一样。

但是,上面这些函数,我能说,是所有编译器和操作系统都会支持的。

下面,我们来简单分析一下这些函数吧。这些函数的命名规则是,以printf和scanf为基础加上一些前缀。不加前缀的默认输出到控制台。

f前缀

输入输出的对象是文件,所以我们看到了参数列表中有FILE。

s前缀

输入输出的对象是字符串,所以参数列表中有一个char *。

v前缀

可以和可变参数列表(va_list)配合使用,这样的目的是可以方便大家创建封装自己的输入输出函数。至于可变参数列表是什么,我会单独写一篇来介绍。

那么我们下面直接看一下实例吧。

/* fprintf example */#include int main (){   FILE * pFile;   int n;   char name [100];   pFile = fopen ("myfile.txt","w");   for (n=0 ; n<3 ; n++)   {     puts ("please, enter a name: ");     gets (name);     fprintf (pFile, "Name %d [%-10.10s]",n+1,name);   }   fclose (pFile);   return 0;}
/* fscanf example */#include int main (){  char str [80];  float f;  FILE * pFile;  pFile = fopen ("myfile.txt","w+");  fprintf (pFile, "%f %s", 3.1416, "PI");  rewind (pFile);  fscanf (pFile, "%f", &f);  fscanf (pFile, "%s", str);  fclose (pFile);  printf ("I have read: %f and %s ",f,str);  return 0;}
/* sprintf example */#include int main (){  char buffer [50];  int n, a=5, b=3;  n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);  printf ("[%s] is a string %d chars long",buffer,n);  return 0;}
/* sscanf example */#include int main (){  char sentence []="Rudolph is 12 years old";  char str [20];  int i;  sscanf (sentence,"%s %*s %d",str,&i);  printf ("%s -> %d",str,i);    return 0;}
/* vprintf example */#include #include void WriteFormatted ( const char * format, ... ){  va_list args;  va_start (args, format);  vprintf (format, args);  va_end (args);}int main (){   WriteFormatted ("Call with %d variable argument.",1);   WriteFormatted ("Call with %d variable %s.",2,"arguments");   return 0;}

以上就是今天的内容,希望对大家有所帮助。

c语言file_C语言 技能提升 系列文章(七)格式化输入/输出相关推荐

  1. c语言eof_C语言 技能提升 系列文章(十)错误处理

    在读写文件时,犯什么错误.这是很常见的,今天咱们就来看看C语言是如何处理这些文件读写错误的. int feof ( FILE * stream ); 这个API的作用是检查文件的EOF(end-of- ...

  2. c语言 feof_C语言 技能提升 系列文章(六)文件操作

    C语言除了提供open()/ read()/ write()/ close() 这些基本的操作以外,还提供了下面几个非常有用的API. // 删除指定的文件int remove ( const cha ...

  3. c语言 结构体_C语言 技能提升 系列文章 (三)结构体

    今天,来跟大家聊一聊C语言中的结构体. 在C语言的各种数据类型中,结构体最特别,因为它是可以被程序员定义的,它的特点是非常的灵活. 定义 struct defined_name{ type_name ...

  4. C语言基础之4:字符串和格式化输入/输出

    Tips1 函数:strlen() 关键字:const 字符串 如何创建.存储字符串 如何使用strlen()函数获取字符串的长度 用C预处理器指令#define和ANSIC的const修饰符创建符号 ...

  5. 【微信小程序开发•系列文章七】websocket

    2019独角兽企业重金招聘Python工程师标准>>> 为什么需要websocket? 传统的实时交互的游戏,或服务器主动发送消息的行为(如推送服务),如果想做在微信上,可能你会使用 ...

  6. C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)

    C 标准库 - <stdio.h> 文章目录 描述 声明 参数 返回值 实例1 实例2 实例3 注意(分隔符:space.Tab.Enter) 换行格式化输入示例(暂时只能弄英文字符,中文 ...

  7. 赛尔号对战c语言程序,赛尔号计算解析系列文章(第一期)

    (注意:为了方便起见,本文所讨论能力值,仅由种族值.个体.性格.学习力这4个基础值决定,默认等级为100级,不计算刻印.战队加成.称号.套装.魂印.年费加成.特训.道具加成.) 为了方便大家对数据进行 ...

  8. c语言file_C语言编程第20讲——几个有用的编译时才确定值的符号

    在C语言编程中,有五个符号,它们的值在编译时,才由编译器替换成常量值,对程序员非常有用. 1.__STDC__ 如果编译器支持标准C语言,则将__STDC__变为1,否则变为0. 例如下面的代码: # ...

  9. c语言file_C语言程序的编译和调试

    1.gcc编译器-熟练使用 gcc(GNU Compiler)是GNU推出的多平台编译器,可以将C.C++源程序编译连接成可执行文件,支持后缀如下: 后缀备注.cc语言源代码文件.h程序所包含的头文件 ...

最新文章

  1. cdr怎样把一张图片随意变形_PS手记|移动工具的使用与画布的变形
  2. Linux下使用rsync最快速删除海量文件的方法
  3. 深度神经网络对基于EEG的情绪识别的关键频带和通道的研究
  4. 企业网络推广浅析网站优化哪些设置会影响蜘蛛的爬取?
  5. python自媒体创作_做自媒体该做什么领域?
  6. Cpp 对象模型探索 / 多重继承虚函数表分析
  7. C++笔记——指针数组/数组指针
  8. JSP基础--动作标签
  9. python词云图_Python生成一篇文章的词云图
  10. protocol buffer开发指南
  11. 静态代码块、非静态代码块和构造方法
  12. [转载] 老版本ubuntu 更新源
  13. Stanford机器学习---第九讲. 聚类
  14. linux的dlan脚本,Linux下的DLNA播放器源码
  15. new function()理解
  16. matlabrobert锐化_基于matlab图像锐化处理
  17. 写微信公众号注意事项
  18. 计算机大作业说明文档,计算机大作业.doc
  19. 项目启动初始化SQL脚本
  20. html5实习体会,html5实习心得体会.doc

热门文章

  1. 「北京」「10-30k」「华米科技(小米手环)」招前端工程师
  2. 30、【华为HCIE-Storage】--Hyper Metro(双活【块业务】)
  3. spring 项目中的一个异常
  4. 被IP代理网站屏蔽了,真是跪了
  5. android用户界面之TabHost教程实例汇总
  6. Cisco交换机路由器的部分命令解析(3)
  7. 选择判断语句(switch)
  8. 大名鼎鼎的Requests库用了什么编码风格?
  9. bootstrap ui
  10. Gluster 常用命令