私はインタビューの準備をしており、私が理解できなかった練習問題を見つけました。コードは次のとおりです。このコードにはバグがありますが、見つけられません
#include <stdio.h>
int main()
{
char *p,*q;
p=(char *)malloc(25);
q=(char *) malloc(25);
strcpy(p,"amazon");
strcpy(q,"hyd");
strcat(p,q);
printf("%s\n",p);
}
コンパイルして実行しましたが、うまくいきました。コードに問題があり、初期化されていない変数と関係があると思われます。出力はamazonhydでなければなりません。誰かが私に何が欠けているかを教えてもらえますか?
編集:これは練習のインタビューの質問であり、このコードで何が問題なのかを質問しています。
「コードに問題があります」と思われる点は何ですか? – artm
'#include'を省略したので、コンパイラはC90モードで動作する必要があり、 'malloc()'が 'int'を返すと仮定していますが、64ビットシステムの場合、 'int'と同じサイズなので、あなたはあらゆる種類の問題に遭遇します。あまり真剣に、#include も省略しました。ただし、C90モードによる前提は、文字列関数の操作に影響を与える可能性は低いです。 –
あなたは[mallocの結果をキャストすることに関するこの質問]に興味があるかもしれません。(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) –