0

我是 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;被分配并且它有一个格式良好的字符串。

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

4

1 回答 1

0

至少有两种情况会导致错误,第一种情况是 when mailis too large for the destination url。我能够获得此代码,seg fault但实现溢出所需的长度可能会有所不同:

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

第二种情况是 if mailis NULL

char  *mail = NULL ; 
strcat(url, mail) ;
于 2013-03-29T01:31:04.413 回答