void print(char a, ...)
{
va_list argp;
va_start(argp, a);
int argvalue = a;
do
{
putchar(argvalue);
argvalue = va_arg(argp, char*);
} while (argvalue != "\0");
va_end(argp);
}
void main()
{
print("12345");
}
兄弟,你这个“12345”是一个参数,传了一个指针,所以你va_arg找不到下一个参数啊。还有你写的有太多不规范的地方。
1.要么你把“12345”改成,‘1’,‘2’,‘3’,‘4’,‘5’
2.要么直接用第一个参数输出,详见下面代码
void print(const char* a, ...)
{
va_list argp;
va_start(argp, a);
int argvalue = *a;
do
{
putchar(argvalue);
argvalue = *(++a);
//argvalue = va_arg(argp, char*);
} while (argvalue != '\0');
va_end(argp);
}
void main()
{
print("12345");
}
#include <stdio.h>
#include <cstdarg>
void print(char a, ...)
{
va_list argp;
va_start(argp, a);
char argvalue = a;
do
{
putchar(argvalue);
argvalue = va_arg(argp, int);
} while (argvalue != '\0');
va_end(argp);
}
void main()
{
print('1','2','\0');
}
1.你想用printf 把判断条件换一下 你拿个int 和 "\0"字符串比较 缓存 '\0' 或者直接 0都可以
2.你argvalue 用int 结果你获取char * 不对的