这是一个简单的程序,其中函数abc返回一个数组。但输出是结构返回字符数组打印值的两倍
Thanks
abcdefThanks
为什么这样?我想谢谢只能打印一次。 此外,我需要把a的大小定为6.在这个程序中,没关系,但我正在做原始套接字编程,我需要它。大小= 6在那里预定义的头文件中声明。我怎样才能实现它?
char *abc()
{
unsigned char *ch;
unsigned char a[7],c[6];
strncpy(a,"Thanks",strlen("Thanks"));
strncpy(c,"abcdef",strlen("abcdef"));
ch=malloc(50);
memset(ch,0,50);
memcpy(ch,&a,strlen(a));
memcpy(ch+strlen(a)+1,&c,strlen(c));
return ch;
}
int main()
{
char *a;
a=abc();
printf("\n%s\n",a);
printf("\n%s\n",(a+7));
fflush(stdout);
return 0;
}
谢谢:)
真的是你传出去把这样?因为'a'会打印'Thanks abcdef','a + 7'会打印'abcdef'。 –