int printf(const char *format, ...); 向默认的标准输出设备按照规定格式输出信息,返回值为打印的字符个数,不包括结束符。例如正常执行printf("1234");printf("%d",1234)返回值都为4,输出失败(没有输出全部字符)则返回负数。
int fprintf(FILE *stream, const char *format, ...);向指定的输出设备按照规定格式输出信息,返回值同上
int sprintf(char *str, const char *format, ...);向指定的内存缓冲区按照规定的格式输出信息,返回值同上
int snprintf(char *str, size_t size, const char *format, ...);向指定长度的缓冲区按照规定格式输出字符串,如果进行格式输出字符串超过缓冲区长度,则只输出缓冲区长度减1个字符,且末尾加字符串结束符\0,如果缓冲区长度大于字符串长度,则字符串全部输出到缓冲区,末尾加\0.返回值同上。
int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
以上4个带v的printf实际上是为用户重新实现可变参数函数设计的,例如假设我们需要实现一个log函数,其功能是打印日志,打印信息被输出到串口,输入参数可变。怎么实现?
int log(int a,int b,int c,const char *format,...)
{
va_list ap;
char str[100];
//处理相关信息

本文详细介绍了printf家族的函数,包括printf、fprintf、sprintf和snprintf等,阐述了它们的功能和返回值。此外,还提到了在Keil集成开发环境中,为了优化嵌入式设备的代码空间,提供了下划线开头的变体,这些变体不支持浮点格式,但具有更高的效率。
最低0.47元/天 解锁文章
1078

被折叠的 条评论
为什么被折叠?



