在C中连接字符串时出错

时间:2013-03-29 01:06:59

标签: c

我是C的新手,我正在尝试使用以下代码在char数组中连接2个字符串:

char url[300];
strcpy(url, "http://example.com/script.php?email=example@example.com");
char * mail = lpObj->Email;
strcat(url, mail);

我在使用Visual Studio的VPS上运行它,我的程序总是崩溃并且它转到带有asm代码的文件。 lpObj->Email;已分配,并且格式正确。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

至少有两种情况会导致错误,第一种情况是mail对目标url而言太大。我能够将此代码发送到seg fault,但实现溢出所需的长度可能会有所不同:

char url[50];
strcpy(url, "http://example.com/script.php?email=example@example.com");
char  *mail = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
strcat(url, mail);

第二种情况是mailNULL

char  *mail = NULL ; 
strcat(url, mail) ;