问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

printf的返回值是什么

发布网友 发布时间:2022-05-16 18:41

我来回答

5个回答

热心网友 时间:2023-11-22 05:18

在stdio.h头文件中:int _Cdecl printf (const char *format, ...);可见printf()函数返回的是int型值,你也可以用sizeof函数测试这个结果.

一、 从printf()开始

从大家都很熟悉的格式化字符串函数开始介绍可变参数函数。

原型:int printf(const char * format, ...);

参数format表示如何来格式字符串的指令,…

表示可选参数,调用时传递给"..."的参数可有可无,根据实际情况而定。

系统提供了vprintf系列格式化字符串的函数,用于编程人员封装自己的I/O函数。

int vprintf / vscanf(const char * format, va_list ap); // 从标准输入/输出
格式化字符串

int vfprintf / vfsacanf(FILE * stream, const char * format, va_list ap);
// 从文件流

int vsprintf / vsscanf(char * s, const char * format, va_list ap); // 从
字符串

// 例1:格式化到一个文件流,可用于日志文件

FILE *logfile;

int WriteLog(const char * format, ...)

{

va_list arg_ptr;

va_start(arg_ptr, format);

int nWrittenBytes = vfprintf(logfile, format, arg_ptr);

va_end(arg_ptr);

return nWrittenBytes;

}



// 调用时,与使用printf()没有区别。

WriteLog("%04d-%02d-%02d %02d:%02d:%02d %s/%04d logged out.",

nYear, nMonth, nDay, nHour, nMinute, szUserName, nUserID);

同理,也可以从文件中执行格式化输入;或者对标准输入输出,字符串执行格式化


在上面的例1中,WriteLog()函数可以接受参数个数可变的输入,本质上,它的实现
需要vprintf()的支持。如何真正实现属于自己的可变参数函数,包括控制每一个传
入的可选参数。

二、 va函数的定义和va宏

C语言支持va函数,作为C语言的扩展--C++同样支持va函数,但在C++中并不推荐使
用,C++引入的多态性同样可以实现参数个数可变的函数。不过,C++的重载功能毕
竟只能是有限多个可以预见的参数个数。比较而言,C中的va函数则可以定义无穷多
个相当于C++的重载函数,这方面C++是*为力的。va函数的优势表现在使用的方
便性和易用性上,可以使代码更简洁。C编译器为了统一在不同的硬件架构、硬件平
台上的实现,和增加代码的可移植性,提供了一系列宏来屏蔽硬件环境不同带来的
差异。

ANSI C标准下,va的宏定义在stdarg.h中,它们有:va_list,va_start(),va_ar
g(),va_end()。

// 例2:求任意个自然数的平方和:

int SqSum(int n1, ...)

{

va_list arg_ptr;

int nSqSum = 0, n = n1;

va_start(arg_ptr, n1);

while (n > 0)

{

nSqSum += (n * n);

n = va_arg(arg_ptr, int);

}

va_end(arg_ptr);

return nSqSum;

}

// 调用时

int nSqSum = SqSum(7, 2, 7, 11, -1);

可变参数函数的原型声明格式为:

type VAFunction(type arg1, type arg2, … );

参数可以分为两部分:个数确定的固定参数和个数可变的可选参数。函数至少需要
一个固定参数,固定参数的声明和普通函数一样;可选参数由于个数不确定,声明
时用"…"表示。固定参数和可选参数公同构成一个函数的参数列表。

借助上面这个简单的例2,来看看各个va_xxx的作用。

va_list arg_ptr:定义一个指向个数可变的参数列表指针;

va_start(arg_ptr, argN):使参数列表指针arg_ptr指向函数参数列表中的第一个
可选参数,说明:argN是位于第一个可选参数之前的固定参数,(或者说,最后一
个固定参数;…之前的一个参数),函数参数列表中参数在内存中的顺序与函数声
明时的顺序是一致的。如果有一va函数的声明是void va_test(char a, char b, c
har c, …),则它的固定参数依次是a,b,c,最后一个固定参数argN为c,因此就是
va_start(arg_ptr, c)。

va_arg(arg_ptr, type):返回参数列表中指针arg_ptr所指的参数,返回类型为ty
pe,并使指针arg_ptr指向参数列表中下一个参数。

va_copy(dest, src):dest,src的类型都是va_list,va_copy()用于复制参数列表
指针,将dest初始化为src。

va_end(arg_ptr):清空参数列表,并置参数指针arg_ptr无效。说明:指针arg_pt
r被置无效后,可以通过调用va_start()、va_copy()恢复arg_ptr。每次调用va_st
art() / va_copy()后,必须得有相应的va_end()与之匹配。参数指针可以在参数列
表中随意地来回移动,但必须在va_start() … va_end()之内。

热心网友 时间:2023-11-22 05:18

返回一个int值,表示被打印的字符数

例如:

int a=104;
printf(%d",a);

printf将返回3,再如:

printf("123\n");

printf将返回4

热心网友 时间:2023-11-22 05:19

声明原型:int printf(const char *format,[argument]); 返回一个整型数值,这个值是输出字符串的字符数如:printf("\n返回值为%d",printf("123abc我"); 返回值为8

热心网友 时间:2023-11-22 05:19

返回值是整型,为printf输出的字符个数

热心网友 时间:2023-11-22 05:20

若执行成功,输出的项数;否则输出0。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...是多少?如果在青海湖没有出现高原反应,那么在拉萨市一般也不会_百度... 2023长虫山开车最佳到山顶路线 蛋挞怎么做好吃 蛋挞的做法是什么 如图,斜三棱柱ABC-A1B1C1中,A1C1⊥BC1,AB⊥AC,AB=3,AC=2,侧棱与底面... 魅族20classic手机通病 为什么反映魅族手机质量、发热、续航、信号与系统bug的网友如此多... 快来人,急救,魅族mx出问题了 我的魅蓝note2(系统是Flyme5.1.6)在联系人里存到有备注的号码怎么在来... 有拿到魅族mx3的吗,我的到了问题好多啊。 揭秘!女友说“你不爱我了”的真正含义 牛骏峰1天学会重庆话演戏,他是否为年轻演员的学习的楷模? printf()的返回值是什么? 泉州关帝庙烧香步骤 宝马x5豪华型和m豪华运动型哪个好 关帝庙烧香,第一个香炉进门口哪个全燃完了,后面的2个香炉的香烧一半灭了,有事吗周口关帝庙? 重庆话到底容易学不? printf是怎么实现的 拜关公什么时候上香比较好? 老款宝马x5和2014款x5外观尺寸大小有什么不同 如何学习重庆话?请问有没有心得? 关帝庙烧香第一把着完了,后面2把不着是为啥? 迪丽热巴向王源学说重庆话,重庆话洗脑流行的原因是什么? 如何快速学习重庆话 这些日子很烦翻译日文 宝马X6为什么不用X5的4.8发动机? fprintf和vfprintf的区别 心烦意躁 日语怎么说啊 ? 日语的”最近比较烦“怎么说? vfprintf — 将格式化字符串写入流? 日语里表示很厌烦的说哎呀,我知道了 怎么说 2020年山西解州关帝庙还能烧香吗? n 95口罩是不是上面写的n 95? 特步和美特斯邦威哪个好? 特步男装FM010941这个款号是假的吗,我在我们这专卖店买的男装,为什么官网无此款号,难道专卖店卖的是假的 家供关公还用去关帝庙烧香吗 C语言 printf和scanf的实现 手上动脉在哪,要具体一点,越具体越好? 到关帝庙去烧香,许愿了但是没有承诺还什么愿,需不需要还愿? 指动脉在哪 c++ printf 的定义 泉州关帝庙烧香很多人买一把旗是什么意思 泉州关帝庙的关帝信仰 美特斯邦威和特步 泉州关帝庙有哪些习俗 给关公磕头磕几个合适 手上的动脉在哪里?详细具体越好 数仓整合层用的文件格式 THC、DOC、ORC、BAF是什么意思? N九五口罩那个凸起的地方是什么? printf问题