C 可变参数 自定义printf
程序员文章站
2022-07-15 09:15:28
...
#include <stdarg.h>
void out(const char *format, ...)
{
va_list arglist;
va_start(arglist, format);
int len = strlen(format);
char *s = new char[len + 1];
memset(s, 0, len + 1);
strcpy(s, format);
for (int i = 0; i < len; i++){
if (!s[i])
break;
if (s[i] == '%'){
i++;
char c = s[i];
if (c == 'd')
printf("%d", va_arg(arglist, int)) ;
else if (c == 'c')
printf("%c", va_arg(arglist, int)) ;
else if (c == 'f')
printf("%f", va_arg(arglist, double)) ;
else if (c == 's')
printf("%s", va_arg(arglist, char *)) ;
else
{
i--;
putchar(s[i]);
}
continue;
}
putchar(s[i]);
}
va_end(arglist);
}
int main()
{
out("这是一个整形 %d\n这是一个字符 %c\n这是一个字符串 %s\n这是一个浮点型 %f\n",
99, 'c', "string", 3.1415926);
return 0;
}
上一篇: C语言----汉明距离(非内置函数解法)
下一篇: C++内置函数