vfprintf()函数
函数声明: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",);
fclose(fp);
return ;
}
运行以下命令:
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()
{
c = fgetc(fp);
if(feof(fp))
{
break;
}
printf("%c",c);
}
fclose(fp);
return ;
}
运行结果:
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函数既可用以判断二进制文件又可用以判断文本文件
vfprintf()函数的更多相关文章
- PHP vfprintf() 函数
实例 把一些文本写入到名为 "test.txt" 的文本文件: <?php高佣联盟 www.cgewang.com$number = 9;$str = "Beiji ...
- printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换函数
参考:http://blog.sina.com.cn/s/blog_674b5aae0100prv3.html 总览 (SYNOPSIS) #include <stdio.h> int p ...
- PHP常用字符串的操作函数
字符串转换类函数 addcslashes函数:以C语言风格使用反斜线转义字符串中的字符 addslashes函数:使用反斜线引用字符串 chop函数:清除字符串中的连续空格 get_html_tran ...
- PHP常用函数大全
usleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.time_sleep_until() ...
- PHP常用函数备用
刚学习php的时候,我也为记忆php函数苦恼不已.认为干嘛记忆这么枯燥无味的东西呢?用的时候查一下手册不就行了吗?但是当时因为身在辅导机构,还是记忆了一大堆自己并不感兴趣的函数. 由此就想起来,小的时 ...
- PHP常用函数大全。
php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...
- PHP 各种函数
usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_unti ...
- php函数整理
php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...
- 【笔记】php常用函数
phpusleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.time_sleep_unti ...
随机推荐
- pb datawindow的用法
1. 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录而不能修改,利用 Column 的 Protect 属性可以很方便的做到这一点,方法如下:将每一列的 Pr ...
- Qt 4.5发布(最大的变动是换用LGPL许可证,移植进了苹果的Cocoa框架。之前的Qt只支持Carbon框架,现在的Qt 4.5两者都支持。单一源代码创建出支持32位或64位字节的Intel或PowerPC Mac二进制文件)
Nokia的开源Qt开发工具正式发布了4.5版.如前所述,Qt 4.5最大的变动是换用LGPL许可证,目前采用的三个许可证分别为LGPL/GPL和商业许可证. 新版 ...
- JS实现带省略号的长分页显示
// 刷新|生成分页信息 function refreshPageInfo(data, pageIndex) { var pageSize = data.pageCount pagingInfo.ht ...
- 作业2:java内存模型图示
参考:http://www.infoq.com/cn/minibooks/java_memory_model?utm_source=infoq&utm_campaign=user_page&a ...
- 【原创】大叔经验分享(69)docker启动java应用的时区问题
在docker中启动tomcat或java类应用,获取时间默认是UTC时间,这是因为容器内的locale没有设置为东8区,最简单的方式是增加JAVA_OPTS 如果是java,直接在java命令后增加 ...
- luogu题解P4198楼房重建--线段树神操作
题目链接 https://www.luogu.org/problemnew/show/P4198 分析 一句话题意,一条数轴上有若干楼房,坐标为\(xi\)的楼房有高度\(hi\),那么它的斜率为\( ...
- 这是一个用于判断IE浏览器版本的紧凑脚本
这是一个用于判断IE浏览器版本的紧凑脚本IE浏览器,不管它们是什么版本,总是与Web标准有些不兼容.对于编码人员来说,这很困难.为了考虑IE的兼容性,不管它是写CSS还是写JS,IE通常都会被特殊处理 ...
- 解决'androidx.arch.core:core-runtime' has different version for the compile (2.0.0) and runtime (2.0.1)
先说原因,我们引用的包版本不同产生了冲突,所以编译不通过.解决的办法是在引用的时候排除一个版本,只留一个版本. 解决过程: 先找出哪些库引用了相同的库,仅仅是版本不同. gradle app:depe ...
- MySQL导出数据到文件中
一.导出一张表数据 把test_time表中的数据导出成txt 文件 mysql> show global variables like '%secure%'; +--------------- ...
- 用Python输出一个Fibonacci数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列” 用文字来说, ...