参考于(28条消息) printf,sprintf,vsprintf 区别_ZinanJau的博客-CSDN博客
// test_printf.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#include <stdio.h>
#include <stdarg.h> //vsprintf_s中需要用到
//vsprintf_s,sprintf_s打印测试
//vsprintf_s,,sprintf_s只是将合成后的字符串存到数组s中,并不会输出到屏幕上
void Mypritf(const char *fmt, ...) {
char s[10];
va_list ap; //ap用于保存参数起始地址,fmt为对应输出格式
va_start(ap, fmt);
vsprintf_s(s, fmt, ap); //可以通过传参方式输出可变参数
va_end(ap);
puts(s);
puts(s);
//sprintf_s(s, fmt); //错误用法,不能输出可变参数
}
void Myprintf_2(const char *fmt,int a,int b) {
char s[10];
sprintf_s(s, fmt,a,b); //可以通过传参方式输出确定的参数
puts(s);
}
int main()
{
std::cout << "Hello World!\n";
int a = 1, b = 2;
/*--------- printf_s ---------------*/
printf_s("a=%d,b=%d\r\n\r\n", a, b);
/*--------- sprintf_s ---------------*/
char s[10]; //用于存储合成后的字符串
sprintf_s(s,"a=%d,b=%d\r\n",a, b); //sprintf_s不能通过传参的方式输出可变参数
puts(s); //输出显示到控制台
Myprintf_2("a=%d,b=%d\r\n", a, b);
/*--------- vsprintf_s ---------------*/
Mypritf("a=%d,b=%d", a, b);
return 0;
}