次のCコードフラグメントがあり、エラーを特定して、より安全に記述する方法を提案する必要があります。
char somestring[] = "Send money!\n";
char *copy;
copy = (char *) malloc(strlen(somestring));
strcpy(copy, somestring);
printf(copy);
したがって、エラーは、strlenが'\0'
文字列の末尾を無視するため、コピーに十分なメモリが割り当てられないということですが、より安全に書き込むことで何が得られるのかわかりません。
私は私が想定しているものを使用することができますmalloc(strlen(somestring)+1))
が、それよりも良い方法があるに違いないと思いますか?
編集: OK、私は答えを受け入れました、それはANSI Cの一部ではないので、strdupソリューションは私たちから期待されないだろうと思います。それはかなり主観的な質問のようですので、私が何をしたかわかりません受け入れられたのは実際には最高です。とにかくすべての答えをありがとう。