0

私はCが初めてで、次のコードを使用して2つの文字列をchar配列に結合しようとしています:

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

エラーの原因となるケースが少なくとも 2 つあります。最初のケースは、mailが宛先に対して大きすぎる場合ですurl。このコードを取得できましたseg faultが、オーバーフローを達成するために必要な長さは異なる場合があります。

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

2 番目のケースは次の場合mailですNULL

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