(int)18 などの文字列の長さを手動で入力し、入力に 18 の長さの文字列の同じデータを与えると、計算時に strlen が (int)strlen(variable[1]) と異なる理由を理解しようとしています。 strlen 関数の結果は 18 であるため、2 つの結果は同じになると思いますが、何らかの理由で strlen が ョœ やその他のランダムな文字などのジャンク データを捨てています。これを修正するには (int)strlen(variable[1])+1 が機能しますが、両方の関数が int 値 18 になると、異なる結果が生じる方法がわかりません。
編集:私の質問を単純化するために、どのように
iResult = send( ConnectSocket, argv[2], (int)strlen(argv[2]), 0 );
異なる
iResult = send( ConnectSocket, argv[2], (int)5, 0 );
argv[2] が "12345" の場合は? 私は同じ結果を期待しますが、私は間違っていて、その方法/理由を知りたいです。
EDIT2:偶然に再コンパイルせずにプログラムをテストするような愚かなことをしたに違いないことを気にしないでください。今ではすべてが期待どおりに機能しているためです...