关于打印2次的问题

zxhong 2006-01-21 01:41:51
代码:
get.h:
typedef char* ns__ParameterName;

typedef char* ns__Test;

struct ParameterNames
{

ns__ParameterName *__ptr ;

int __size ;

};

struct ns__Ret
{

ns__Test *__ptr ;

int __size ;
};

struct ns__GetParameterValuesResponse
{
struct ns__Ret *ns__Ret;

};


int ns__GetParameterValues(
struct ParameterNames* ParameterList,
struct ns__GetParameterValuesResponse *bb///< response parameter
);
a.c

#include <malloc.h>
#include "get.h"

int GetParameterValues(const char* server,struct ParameterNames *ParameterList,struct ns__GetParameterValuesResponse *bb)
{



char *test[2];
test[0] = (char *)malloc(10);
test[1] = (char *)malloc(10);

test[0] = "234456559999";
test[1] = "ert123";


struct ns__Ret *ret;
ret = (struct ns__Ret *)malloc(sizeof(struct ns__Ret));
ret->__ptr = test;
ret->__size = 2;

bb->ns__Ret = ret;



return 0;
}
b.c
#include<iostream.h>
#include <stdio.h>
#include <malloc.h>
#include "get.h"

int GetParameterValues(const char* server, struct ParameterNames *ParameterList,struct ns__GetParameterValuesResponse *bb);

int main(int argc, char **argv)
{
int re = -1;
char *test[2];
char* server="http://172.22.0.141:8888";

test[0] = (char *)malloc(10);
test[1] = (char *)malloc(10);

test[0] = "23445655";
test[1] = "ert123";

struct ParameterNames *Para;
Para =(struct ParameterNames*)malloc(sizeof(struct ParameterNames));

Para->__ptr = test;
Para->__size = 2;


struct ns__GetParameterValuesResponse *bb;

bb =(struct ns__GetParameterValuesResponse*)malloc(sizeof(struct ns__GetParameterValuesResponse));



re= GetParameterValues(server, Para, bb);
if (re != 0)
{
printf("soap err,errcode = %d\n", re);
}
else
{
//bb.ns__Ret = (struct ns__Ret *)malloc(sizeof(struct ns__Ret));
printf("aa=%s\n", bb->ns__Ret->__ptr[0]);//第一次打印正确(test[0]值)
printf("aa=%s\n", bb->ns__Ret->__ptr[0]);//第二次打印错误(乱码)
}
return 0;
}

问题如上

不知道我代码问题在哪里?希望大牛们给个意见或建议



...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxhong 2006-01-21
  • 打赏
  • 举报
回复
printf("aa=%s\n", bb->ns__Ret->__ptr[1]);//直接死掉
printf("aa=%s\n", bb->ns__Ret->__ptr[0]);//第一次正常,第二次乱码
zxhong 2006-01-21
  • 打赏
  • 举报
回复
除了打印2次不正确外


printf("aa=%s\n", bb->ns__Ret->__ptr[1]);//直接死掉

我在GetParameterValues函数里有赋值啊

郁闷
healer_kx 2006-01-21
  • 打赏
  • 举报
回复
很有可能是堆被写坏了。或者分配的堆空间没有\0的位置。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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