最熟悉的不用说就是printf了,居然有了printf为什么还要有别的输出函数哪?当然是因为有不同的用途。
1.printf和sprintf的区别
先看看两个函数的原型
/* Write formatted output to stdout. */
extern int printf (const char *__restrict __format, ...);
/* Write formatted output to S. */
extern int sprintf (char *__restrict __s,
const char *__restrict __format, ...) __THROWNL;
sprintf比printf多了一个参数,也就是第一个参数char __restrict __s,其实就是个char类型的字符串。而且源码注释也解释的非常清楚——Write formatted output to S.也就是结果会保存到用户传入的第一个字符串参数里面。相对于是一个缓存。而printf源码注释也解释的非常清楚——Write formatted output to stdout.——是直接输出到stdout,也就是标准输出。
看下面的例子就能明白sprintf的用法:
int main(int argc, char *argv[]) {
char buff[15];
int a=10;
sprintf(buff,"sprintf %d\n",a);
return 0;
}
输出:
buff size 11
通过调用sprintf后,buff里面确实有值了,而且size是11。而且不会把buff的内容输出到屏幕(标准输出stdout)上。写到这sprintf的语法已经全部讲完了,sprintf唯一的作用就是向char *buff里面写内容。不输出我怎么知道里面有内容呢?你可以debug,也可以用printf输出,但是对于后者,可能是多此一举。看下面的例子
int main(int argc, char *argv[]) {
char buff[15];
int a=10<

本文详细介绍了C语言中printf、sprintf和vsprintf的区别和用途。printf用于标准输出,将格式化的字符串输出到屏幕;sprintf则将格式化的输出保存到指定的字符串缓冲区中,不直接输出;vsprintf与sprintf类似,但接受一个va_list类型的参数,提供更灵活的可变参数处理。通过对这几个函数的理解,可以更好地掌握C语言中的格式化输出和内存缓冲区操作。

8481

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



