juffun
使用strcpy函数时的奇怪问题
[code]
tmp[0]=(gchar *)malloc(30);
tmp[1]=(gchar *)malloc(30);
tmp[2]=(gchar *)malloc(30);
for ( i=0; i<length; i++)
{
g_printf("%s",goods[i].name);
glist[i]=(gchar *)malloc(sizeof(goods[i].name));
strcpy(glist[i],goods[i].name);
以下的部分加上就说段错误,不加就没问题,不知道为什么?谢谢大牛
strcpy(tmp[0],goods[i].name);
strcpy(tmp[1],goods[i].ID);
strcpy(tmp[2],(gchar *)goods[i].amount);
}
结构体是这样定义的:
struct GOODS
{
gchar name[20];
gchar ID[10];
gint amount;
}goods[100];
[/code]
[[i] 本帖最后由 juffun 于 2008-6-19 21:07 编辑 [/i]]
fertiland
[table=95%][tr][td][font=FixedSys][color=#000000] [color=#FF0000]strcpy[/color][color=#0000CC]([/color]tmp[color=#0000CC][[/color]1[color=#0000CC]][/color][color=#0000CC],[/color]goods[color=#0000CC][[/color]i[color=#0000CC]][/color][color=#0000CC].[/color]ID[color=#0000CC])[/color][color=#0000CC];[/color]
[color=#FF0000]strcpy[/color][color=#0000CC]([/color]tmp[color=#0000CC][[/color]2[color=#0000CC]][/color][color=#0000CC],[/color][color=#0000CC]([/color]gchar [color=#0000CC]*[/color][color=#0000CC])[/color]goods[color=#0000CC][[/color]i[color=#0000CC]][/color][color=#0000CC].[/color]amount[color=#0000CC])[/color][color=#0000CC];[/color][/color][/font][/td][/tr][/table]
char *strcpy( char *dest, const char *src);
result returns the a pointer to the destination string.
for the strcpy, as you know, only it recognizes the terminating characters. so if you don't initialize the src, you may point to invalid space, or crash your system.
hyrish
strcpy(tmp[2],(gchar *)goods[i].amount); 这行中不能直接将一个整数转换成一个字符指针,如下:
strcpy(tmp[2],(gchar *)&goods[i].amount);
你可以这样初始化:
memset(temp[0], 0, 30);
memset(temp[1], 0, 30);
memset(temp[2], 0, 30);