私はこの問題のトラブルシューティングを試みて、何もせずに終了しました。正しい方向に私を助けてくれることを願っています。私はchar型の配列をこのように初期化プログラムがあります。strcpyの後にCプログラムがクラッシュする
char variable1[8];
をそして私は、関数1()は文字列値を返す関数すなわち
...
strcpy(variable1, (char *)function1());
の戻り値をコピーしよう。私はstrcpyの行を実行しようとすると、
char* function1()
{
....
char variable2[8]={'\0'};
...
return (variable2);
}
プログラムがクラッシュ: はここではfunction1の構造です。
私はhere
重要
ことstrcpyの関数に読んでいる:あなたは宛先バッファ(S1)は終端のNULLバイトを含むソース配列内のすべての文字を含めることが可能であることを確認する必要があります。そうでなければ、strcpy()はバッファオーバーフローを起こしてバッファオーバーフローを引き起こし、プログラムがクラッシュする可能性があります。
したがって、変数1のサイズを20に引き上げようとしましたが、プログラムがクラッシュしました。
それ以外は、別のアプローチ、つまりstrncpy関数呼び出しを使用しましたが、それでも私には同じエラーが表示されます。
奇妙なことは、問題なく値を返すfunction1()を実行できることです。私はそれをコピーしようとしたときだけ、私のプログラムがクラッシュします。私は次に何をすべきですか?
は、デバッガを使用する方法を学びます。そしてコンパイラに警告を与えることができます(例えば、 'gcc -Wall -Wextra')、警告が表示されなくなるまであなたのソースを改善してください。 –