函数声明:int vfprintf(FILE *stream, const char *format, va_list arg)

函数参数:

stream—这是指向了FILE对象的指针,该FILE对象标识了流。

format—c语言字符串,包含了要被写入到流stream中的文本。它可以包含嵌入的format标签,被随后的附加参数中指定的值所替代,并按照需求进行格式化。Format标签属性是%[flags][width][.precision][length]specifier。

specifier说明符

输出

c

字符

d(i)

有符号的十进制整数

e

E

使用e字符的科学记数法(尾数和指数)

使用E字符的科学记数法(尾数和指数)

f

十进制浮点数

g

自动选择%e或%f中合适的表示法

G

自动选择%E或%f中合适的表示法

o

有符号的八进制

s

字符的字符串

u

无符号的八进制

x

无符号的十六进制

X

无符号的十六进制(大写)

p

指针地址

n

无输出

%

字符

Flags(标识)

描述

-

在给定的字段宽度内左对齐,默认右对齐

+

强制在结果之前显示加号或减号(+或-)

(space)

如果没有写如何符号,在在该值前插入一个空格

#

与 o、x 或 X 说明符一起使用时,非零值前面会分别显示 0、0x 或 0X。

与 e、E 和 f 一起使用时,会强制输出包含一个小数点,即使后边没有数字时也会显示小数点。默认情况下,如果后边没有数字时候,不会显示显示小数点。

与 g 或 G 一起使用时,结果与使用 e 或 E 时相同,但是尾部的零不会被移除。

0

在指定填充padding的数字左边放置零(0)

Width

描述

(number)

要输出的字符最小数目,如果输出的值短于该数字,结果会用空格填充;如果结果长于该数,结果不会被截断

*

宽度在format字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前

.precision

描述

.number

对于整数说明符(d、i、o、u、x、X):precision 指定了要写入的数字的最小位数。如果写入的值短于该数,结果会用前导零来填充。如果写入的值长于该数,结果不会被截断。精度为 0 意味着不写入任何字符。

对于 e、E 和 f 说明符:要在小数点后输出的小数位数。

对于 g 和 G 说明符:要输出的最大有效位数。

对于 s: 要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。

对于 c 类型:没有任何影响。

当未指定任何精度时,默认为 1。如果指定时不带有一个显式值,则假定为 0。

*

精度在 format 字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前

Length(长度)

描述

h

参数被解释为短整型或无符号短整型

I

参数被解释为长整形或无符号长整形,适用于整型说明符

L

参数被解释为长双精度型

arg – 一个标识可变参数列表的对象。这应被<stdarg> 中定义的va_start宏初始化。

函数返回值:如果成功,则返回字符总数,否则返回一个负数。

实例:

#include<stdio.h>
#include<stdarg.h>void WriteFrmtd(FILE *stream, char *format,...)
{va_list args;va_start(args,format);vfprintf(stream,format,args);va_end(args);
}int main()
{FILE *fp;fp = fopen("file.txt","w");WriteFrmtd(fp,"this is just onte argument %d \n",10);fclose(fp);return 0;
}

运行以下命令:

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ gcc vfprintf.c -o vfprintf

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ ./vfprintf

执行结果:

也可以使用以下程序来查看文件内容:

#include<stdio.h>
int main()
{FILE *fp;int c;fp = fopen("file.txt","r");while(1){c = fgetc(fp);if(feof(fp)){break;}printf("%c",c);}fclose(fp);return 0;
}

运行结果:

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ gedit check.c

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ gcc check.c -o check

exbot@ubuntu:~/wangqinghe/WriteLog/20190708$ ./check

this is just onte argument 10

函数解释:

fgetc()函数:从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。

表头文件:include<stdio.h>

定义函数:int fgetc(FILE *stream);

返回值:fgetc()会返回读取的字符,若返回EOF则表示到了文件尾,或出现了错误。

feof()函数:

检测文件结束符,若文件结束则返回非0值,否则会返回0.

文件结束符只能被clearerr()清除。

补充:

EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0xFF(十进制为-1),因此可以用EOF作为文件结束标志。

当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件

转载于:https://www.cnblogs.com/wanghao-boke/p/11152091.html

vfprintf()函数相关推荐

  1. vfprintf php,PHP vfprintf() 函数

    把一些文本写入到名为 "test.txt" 的文本文件: echo vfprintf($file,"There are %u million bicycles in %s ...

  2. C语言中within函数,vfprintf() - C语言库函数

    C库函数 int vfprintf(FILE *stream, const char *format, va_list arg)发送格式化输出到一个流使用传递给它的参数列表. 声明 以下是vfprin ...

  3. 常用的php函数,PHP常用函数整理(上)

    usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_unti ...

  4. 各种输出函数的比较(printf/fprintf/sprintf/snprintf/vprintf/vfprintf/vsprintf/vsnprintf)

    对于程序猿来说,printf函数可以说是最熟悉的一个工具了.利用它可以将各类调试信息输出到指定的设备(比如串口)中,实现对程序运行状态的掌控和分析.不过,在实际的应用中,相信大家除了printf函数之 ...

  5. php中文切齿,PHP 各种函数

    usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_unti ...

  6. linux c语言内核函数手册,Linux C函数实例速查手册

    函数学习目录: 第1章 初级I/O函数 1.1 close函数:关闭已经打开的文件 1.2 creat函数:创建一个文件 1.3 dup函数:复制文件描述符 1.4 dup2函数:复制文件描述符到指定 ...

  7. 一文弄懂printf函数从用户态到内核态的执行流程

    目录 1.简介 2.示例代码 3.程序执行初探 4.用户态处理流程 5.内核态处理流程 5.1. 软中断处理 5.2 系统调用返回 5.3 系统调用处理 5.4 stdout重定向到console 5 ...

  8. thinkphp5常用函数汇总_(thinkPHP)PHP常用函数大全

    usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_unti ...

  9. php常用系统函数库,PHP常用函数大全

    php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...

最新文章

  1. linux驱动模块makefile,linux驱动makefile求解
  2. springboot 日志设计结构
  3. ZOJ The Sum of Unitary Totient(min_25 筛)
  4. PHP笔记-订货单例子
  5. 【安全测试】:某系统短信修改密码,绕过逻辑漏洞
  6. Android商城开发系列(一)——开篇
  7. Apache Pulsar的多租户消息系统
  8. 【logstash】使用logstash拉取数据到kerberos+SSL认证的kafka集群中遇到的坑
  9. springboot+web文件上传和下载
  10. linux下vlc视频录制,使用VLC录制屏幕
  11. 如何编写makefile文件
  12. android 代码设置默认浏览器打开,android手机如何设置默认浏览器?
  13. 走进3D投影秀,感受艺术创意“无止境”…
  14. 【实践】基于CentOS7部署Ceph集群(版本10.2.2)
  15. 双亲委派模型以及SpringFactoriesLoader详解(最全最简单的介绍)
  16. python 获取当前时间(年月日时分秒)
  17. 【JDK7】新特性(3) JDBC4.1
  18. 【火灾检测】基于matlab GUI森林火灾检测系统(带面板)【含Matlab源码 1921期】
  19. 秋天SWF生成PDF免费版V1.4
  20. 通过外部交换平台发送xml文件,手动加载能正常发送,但是通过代码拼xml文件发送报错找不到用户,userid is pfxx-user 16dXXXX

热门文章

  1. Spring事务配置方式(一) 拦截器方式配置
  2. C语言操作mysql
  3. 猫眼html源码,50 行代码教你爬取猫眼电影 TOP100 榜所有信息
  4. python es 数据库 ik_Linux系统:centos7下搭建ElasticSearch中间件,常用接口演示
  5. 计算机专业多元协同,项目主导多元协同资源开放—软件技术专业人才培养体系的创新实践.pdf...
  6. java 字符码_Java字符编码
  7. 县级的图书馆计算机管理员,图书馆管理员的岗位职责
  8. java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别
  9. Nginx 实现网站 http、https 配置
  10. AEAP的完整形式是什么?