我是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;
已分配,并且格式正确。
有人知道为什么会这样吗?
答案 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);
第二种情况是mail
是NULL
:
char *mail = NULL ;
strcat(url, mail) ;