Chinaunix
标题:
请大家帮我看看程序怎么回事,谢谢!
[打印本页]
作者:
mmgg00
时间:
2005-10-24 15:32
标题:
请大家帮我看看程序怎么回事,谢谢!
目的:想建立一个结构体数组,把s1中的字符串赋给结构体数组中的key,s2中的字符串赋给结构体数组中的val
结果在1处的printf能正常输出,在2处的printf只能输出后面3组字符串,第一组不能正常输出,不知道怎么回事,请大家看看,谢谢了
#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>;
struct SP
{
char *key;
char *val;
};
main()
{
struct SP *re;
int i;
char *s1[]={"aaa","bbb","ccc","ddd"};
char *s2[]={"111","222","333","444"};
re = (struct SP *)malloc(4*sizeof(struct SP*));
for (i = 0; i < 4;i++)
{
re[i].key = (char *)malloc( strlen(s1[i]) + 1);
strcpy(re[i].key,s1[i]);
re[i].val = (char *)malloc( strlen(s2[i]) + 1);
strcpy(re[i].val,s2[i]);
printf("%s---%s\n",re[i].key,re[i].val);/*-------1*/
}
for (i = 0;i < 4;i++)
printf("%s---%s\n",re[i].key,re[i].val);/*--------2*/
/*........................................................................................*/
}
复制代码
作者:
zalem
时间:
2005-10-24 15:47
标题:
请大家帮我看看程序怎么回事,谢谢!
#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>;
struct SP
{
char *key;
char *val;
};
main ()
{
struct SP *re;
int i;
char *s1[] = { "aaa", "bbb", "ccc", "ddd" };
char *s2[] = { "111", "222", "333", "444" };
re = (struct SP *) malloc (4 * sizeof (struct SP));
for (i = 0; i < 4; i++)
{
re[i].key = (char *) malloc ((sizeof (char) *(1+ strlen (s1[i]))));
strcpy (re[i].key, s1[i]);
re[i].val = (char *) malloc ((sizeof (char) * (1+strlen (s2[i]))));
strcpy (re[i].val, s2[i]);
printf ("%s---%s\n", re[i].key, re[i].val);
}
for (i = 0; i < 4; i++)
printf ("%s---%s\n", re[i].key, re[i].val);
}
复制代码
看看哪些地方不一样
作者:
mmgg00
时间:
2005-10-24 15:59
标题:
请大家帮我看看程序怎么回事,谢谢!
恩,成功了,谢谢啊,能给我解释一下吗??
不怎么清楚呢,好人啊,嘿嘿
re = (struct SP *) malloc (4 * sizeof(struct SP*));
复制代码
其他的我明白了,可是这一句为什么不行呢?
作者:
zalem
时间:
2005-10-24 16:10
标题:
请大家帮我看看程序怎么回事,谢谢!
因为你需要的是4个这个结构体(每个8byte)的大小,而不是4个指针(每个4byte)的大小阿,这次真的看书去了...
作者:
mmgg00
时间:
2005-10-24 16:14
标题:
请大家帮我看看程序怎么回事,谢谢!
哦,明白了
谢谢啊,嘿嘿,回去再看看书
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2