运行时错误

aspireal 2009-04-06 06:22:50
#include <iostream.h>
#include <stdarg.h>
#include <string.h>

char* val(char *dest,int count,...)
{
int i;
va_list arg;
va_start(arg, count);

for(i=1; i <= count; i++)
strcat(dest, va_arg(arg, char *));

return dest;
}

int main()
{
char dest[] = "haha";

cout << val(dest, 2, "wh", "wh");
cout << val(dest, 1, "wh");

return 0;
}


运行时错误,那位大侠帮忙解决?
...全文
99 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
M_S_D_N 2009-04-07
  • 打赏
  • 举报
回复
个人认为va_end是从编程习惯来说最好要用,从纯粹的代码作用来说,没用。。。没有任何影响。
aaaa3105563 2009-04-07
  • 打赏
  • 举报
回复
空间不够·
newborn2012 2009-04-06
  • 打赏
  • 举报
回复
UP
xqls_xqls 2009-04-06
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
#include <stdarg.h>
#include <string.h>
using namespace std;

char* val(char *dest,int count,...)
{
int i;
va_list arg;
va_start(arg, count);

for(i=1; i <= count; i++)
strcat(dest, va_arg(arg, char *));
va_end(arg);
return dest;
}

int main()
{
char dest[100] = "haha";

cout << val(dest, 2, "wh", "wh")<<endl;
cout << val(dest, 1, "whhhh")<<endl;

return 0;
}
tangshuiling 2009-04-06
  • 打赏
  • 举报
回复

确是空间不够的问题,其次是va_系列宏必须以va_end()收尾。
xylicon 2009-04-06
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <stdarg.h>
#include <string.h>

char* val(char *dest,int count,...)
{
int i;
va_list arg;
va_start(arg, count);

for(i=1; i <= count; i++)
strcat(dest, va_arg(arg, char *));

return dest;
}

int main()
{
char dest[255] = "haha"; // 分配的空间不足
cout < < val(dest, 2, "wh", "wh");
cout < < val(dest, 1, "wh");

return 0;
}
  • 打赏
  • 举报
回复
va_end(arg);
看下,这里没善后的样.

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧