c语言file_C语言 技能提升 系列文章(七)格式化输入/输出
当初大家入门学习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语言 技能提升 系列文章(七)格式化输入/输出相关推荐
- c语言eof_C语言 技能提升 系列文章(十)错误处理
在读写文件时,犯什么错误.这是很常见的,今天咱们就来看看C语言是如何处理这些文件读写错误的. int feof ( FILE * stream ); 这个API的作用是检查文件的EOF(end-of- ...
- c语言 feof_C语言 技能提升 系列文章(六)文件操作
C语言除了提供open()/ read()/ write()/ close() 这些基本的操作以外,还提供了下面几个非常有用的API. // 删除指定的文件int remove ( const cha ...
- c语言 结构体_C语言 技能提升 系列文章 (三)结构体
今天,来跟大家聊一聊C语言中的结构体. 在C语言的各种数据类型中,结构体最特别,因为它是可以被程序员定义的,它的特点是非常的灵活. 定义 struct defined_name{ type_name ...
- C语言基础之4:字符串和格式化输入/输出
Tips1 函数:strlen() 关键字:const 字符串 如何创建.存储字符串 如何使用strlen()函数获取字符串的长度 用C预处理器指令#define和ANSIC的const修饰符创建符号 ...
- 【微信小程序开发•系列文章七】websocket
2019独角兽企业重金招聘Python工程师标准>>> 为什么需要websocket? 传统的实时交互的游戏,或服务器主动发送消息的行为(如推送服务),如果想做在微信上,可能你会使用 ...
- C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)
C 标准库 - <stdio.h> 文章目录 描述 声明 参数 返回值 实例1 实例2 实例3 注意(分隔符:space.Tab.Enter) 换行格式化输入示例(暂时只能弄英文字符,中文 ...
- 赛尔号对战c语言程序,赛尔号计算解析系列文章(第一期)
(注意:为了方便起见,本文所讨论能力值,仅由种族值.个体.性格.学习力这4个基础值决定,默认等级为100级,不计算刻印.战队加成.称号.套装.魂印.年费加成.特训.道具加成.) 为了方便大家对数据进行 ...
- c语言file_C语言编程第20讲——几个有用的编译时才确定值的符号
在C语言编程中,有五个符号,它们的值在编译时,才由编译器替换成常量值,对程序员非常有用. 1.__STDC__ 如果编译器支持标准C语言,则将__STDC__变为1,否则变为0. 例如下面的代码: # ...
- c语言file_C语言程序的编译和调试
1.gcc编译器-熟练使用 gcc(GNU Compiler)是GNU推出的多平台编译器,可以将C.C++源程序编译连接成可执行文件,支持后缀如下: 后缀备注.cc语言源代码文件.h程序所包含的头文件 ...
最新文章
- cdr怎样把一张图片随意变形_PS手记|移动工具的使用与画布的变形
- Linux下使用rsync最快速删除海量文件的方法
- 深度神经网络对基于EEG的情绪识别的关键频带和通道的研究
- 企业网络推广浅析网站优化哪些设置会影响蜘蛛的爬取?
- python自媒体创作_做自媒体该做什么领域?
- Cpp 对象模型探索 / 多重继承虚函数表分析
- C++笔记——指针数组/数组指针
- JSP基础--动作标签
- python词云图_Python生成一篇文章的词云图
- protocol buffer开发指南
- 静态代码块、非静态代码块和构造方法
- [转载] 老版本ubuntu 更新源
- Stanford机器学习---第九讲. 聚类
- linux的dlan脚本,Linux下的DLNA播放器源码
- new function()理解
- matlabrobert锐化_基于matlab图像锐化处理
- 写微信公众号注意事项
- 计算机大作业说明文档,计算机大作业.doc
- 项目启动初始化SQL脚本
- html5实习体会,html5实习心得体会.doc