• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語(ポインタ)について)

C言語ポインタの問題と解答

このQ&Aのポイント
  • C言語のポインタに関する問題と解答について紹介します。
  • 問題は、strcat()の独自バージョンであるmystrcat()関数の作成と、その関数を利用したプログラムの作成です。
  • 解答では、mystrcat()関数の動作として、指定された文字列の最後に別の文字列を連結することが行われています。最後にヌル終端文字を付加する理由は、文字列の終端を示すためであり、文字列操作で必要な処理です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

No.2の方が回答されているように、そういう決まりです。 Cコンパイラは'\0'の直前の文字までを一連の文字列と見なします。 そして、No.1の方が回答されているように、 while(*to) や while(*from) は while(*to != 0) や while(*from != 0) と書いているのと同じことになります。 そして '\0' は数値としては 0 と同じなので while(*to != '\0') や while(*from !='\0') と書いているのと同じことになります。 そしてmystrcatの第一引数の文字列の空きスペースには 元々どんな値が入っているかわからないので、確実に'\0'を設定して、 意図しない位置まで文字列と見なされないようにする必要があります。

hitosashi
質問者

お礼

回答ありがとうございます。 そんなに難しく考えず、一つのルールとして捉えると良いのかもしれませんね。 細かく教えて頂き感謝します。

その他の回答 (2)

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

Cでは文字列は文字の集まりとしており、その最後には'00'が置かれているものとする。 という「定義」です。教科書の最初(charの項)に書いていると思います。

hitosashi
質問者

お礼

回答ありがとうございます。 そんなに難しく考えず、一つのルールとして捉えると良いのかもしれませんね。 参考書を読み直して理解を深めていこうと思います。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>while(*from) >*to++ = *from++; このループが終わる条件と、そのとき*toにコピーが終わっている文字について考えてみてください。 デバッガでステップ実行してみるのもよいでしょう。

hitosashi
質問者

お礼

回答ありがとうございます。 他2名の回答者も詳しく教えて下さったので、理解しやすかったです。 迅速な回答感謝します。

関連するQ&A