プログラミングの初心者。誰かが、このコードスニペットでwhileループが何をしているのかを理解するのに役立つでしょうか?私はこのタイプのwhileループを見たことがありません。奇妙なwhileループ。困惑
しかし、私はそれがポインタ算術演算を実行していることを理解していますが、それは実際に擬似コードまたは単純な英語の観点から何が分かりますか? :)
char*
cpy (char* s)
{
char *dest, *d;
d = dest = malloc(strlen(s) * sizeof(char) + 1);
if (d)
while ((*d++ = *s++));
return dest;
}
私はそれが別のソースから文字列をコピーしていると信じています。それは文字のためにそうしている。それは一行でたくさんしています。 * dを* sに設定し、次の文字の両方にインクリメントします。最終的にヌル文字(文字列の終わり)に到達すると、それはそれを返してwhileループを終了させます。 – ritlew
あなたはk&r本でこれを読んだことがありますか?文字列をコピーするには 'memcpy'を呼び出す方がよいでしょう。 –
デバッグのヘルプを求める質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、およびそれを再現するのに必要な最短コード質問そのもの。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 – Olaf