【发布时间】:2011-10-05 08:33:47
【问题描述】:
我有一个这样定义的结构:
typedef struct stringd{
char *y;
char *x[32];
}stringd;
在主程序中,我声明了一个指向 stringd 的指针,如下所示:
stringd *d = malloc(sizeof(*d));
在主函数中,我解析输入字符串,然后将其存储在二维字符数组中
char *c[32];
每当我遇到'|'输入字符串中的字符我将 c 的项目复制到 stringd 结构中的 *x[32] 。如下图:
if (c[i][0]=='\174')
for(j=0;j<=i;j++){
d[k].x[j]=c[j];
c[j]=NULL;
}
k++;
一旦从输入中获取最后一个字符串(分隔符是空格),我将数组 c 的最终副本复制到 stringd 中的 x,如图所示(token 是指向输入字符串的指针);
if(*token == '\0'||*token=='\n'
for(j=0;j<=i;j++){
d[k].x[j]=c[j];
}
这里的问题是先前存储在 struct char 数组 x 中的字符串在最后一次操作时被垃圾字符覆盖。我哪里错了?
感谢任何帮助,
【问题讨论】:
-
你有没有为 stringd 的 y 和 x[] 指向的对象分配内存? c[] 的问题相同。如果不是,您正在破坏内存,可能是其他一些对象所在的位置。