关于va_list实例
2024-10-08 19:40:13
printf函数:
#include <stdio.h>
#include <stdarg.h> int myself_printf(char *format, ...)
{
va_list ap;
int n; va_start(ap, format); n = vprintf(format, ap); va_end(ap); return n;
} int main(void)
{
myself_printf("test_num : %d\n", );
}
运行结果:test_num : 123
error函数:
#include <stdio.h>
#include <stdarg.h> int myself_error(char *format, ...)
{
va_list ap;
char *str;
int n; va_start(ap, format); fprintf(stderr, "Error: ");
vfprintf(stderr, format, ap); va_end(ap); return n;
} int main(void)
{
myself_error("%s\n", "main failure");
}
运行结果:Error: main failure
函数:
#include <stdio.h>
#include <stdarg.h> void foo(char *format, ...)
{
va_list ap;
char c, *s;
int d; va_start(ap, format); while (*format) {
switch (*format++) {
case 's': /* string */
s = va_arg(ap, char *);
printf("string :%s\n", s);
break;
case 'd':
d = va_arg(ap, int);
printf("int :%d\n", d);
break;
case 'c':
c = (char) va_arg(ap, int);
printf("char :%c\n", c);
break;
}
va_end(ap);
}
} int main(void)
{
char c = 'b';
foo("dc", "a", , c);
}
运行结果:
string :a
int :1
char :b
函数:
#include <stdio.h>
#include <stdarg.h> void foo(int n, ...)
{
va_list ap;
int tmp, i; va_start(ap, n); for (i = ; i < n; i++) {
tmp = va_arg(ap, int);
printf("tmp : %d\n", tmp);
} va_end(ap); } int main(void)
{
foo(, "", , , );
}
运行结果:
tmp : 1
tmp : 2
tmp : 3
tmp : 4
和上边的函数进行对比:
#include <stdio.h> void foo(int n, ...)
{
int *temp = &n;
int i = ; temp++;
for (i = ; i < n; i++) {
printf("temp : %d\n", *temp);
temp++;
}
} int main(void)
{
foo(, , , , );
}
运行结果:
temp : 1
temp : 2
temp : 3
temp : 4
函数:
#include <stdio.h>
#include <stdarg.h> void foo(char *format, ...)
{
va_list ap;
char *res; va_start(ap, format); res = va_arg(ap, char *);
printf("va_arg result : %s\n", res);
printf("%s%s\n", format, res); va_end(ap);
} int main(void)
{
foo("test : ", "foo");
}
运行结果:
va_arg result : foo
test : foo
函数:
#include <stdio.h>
#include <stdarg.h> void testFun(char *a, int b, char *c, ...)
{
va_list ap; va_start(ap, c); vsnprintf(a, b, c, ap);
printf("a : %s\n", a); va_end(ap);
} int main(void)
{
char buf[];
testFun(buf, , "def");
}
运行结果:a : def
最新文章
- HDU - 1232 畅通工程
- 【T_SQL】 基础 续+++
- PHP 一个表单多个提交按钮,处理不同的业务逻辑
- Json与类对象转换
- 【POJ 1035】Spell checker
- AutoMapper使用笔记
- 三级联动(ajax)
- eclipse项目出现红色叉叉解决方案
- 转:SVN Eclipse插件Subclipse安装和配置
- 想成为Java高级工程师的看过来
- 【webpack系列】从零搭建 webpack4+react 脚手架(五)
- numpy中的norm用法
- Laravel 出现 No application encryption key has been specified.
- cocos2dx2.x&;3.x部分函数对照表
- visual studio 2013的使用和单元测试
- springmvc实现json交互 -requestBody和responseBody
- oracle 数据库相关名词--图解
- Ubantu下安装jdk 教程
- linux 源码编译php的参数
- JMeter调试工具--Debug Sampler(转载)