>> DAVID J.マラン：だからそれはことが判明 文字列をコピーすることはほぼ同じではありません
プリミティブをコピーするような単純な、 intやfloat型などがある。
結局のところ、ボンネットの下に文字列 シーケンス文字である。
ため、文字列をコピーするため、必要があります の全配列をコピーすることが含ま
文字。
>> それではそれに戻って私たちの目を向けてみましょう 最後の実装とこれをリッピング
行、列tは、秒に等しい 明らかに十分ではなかった。
それではその行と交換してみましょう このように、代わりに、見えます。
文字列tは、文字列長のmalloc関数を取得します CHARのSプラス1倍の大きさ。
>> 今行くビットが引用あります このコード行中に。
まず、malloc関数はメモリの略 割り当て、
この関数はまさにそれを行います。
整数を考えると、それはあなたに戻ります のメモリチャンクのアドレス
多くのバイト数。
一方、文字列sの長さプラス1 我々が望むことを示すことを意味する
Sはすでに占有するバイト数、 そのヌルターミネータを含む
文字列の末尾にバックスラッシュ0。
>> その間、私は必ずしも覚えていません チャーはあっても、どのように大きな
ほとんどのシステムでは、単に1だけれども バイトなので、私はする文字のサイズを呼ぶことにします
どのように大きな動的に把握 個々の文字です。
一度一緒に乗じ、私が取り戻す 私は必要なバイト数の合計。
>> しかし、malloc関数はに何を失敗した場合 我々が必要とするメモリを返す？
次のように私は最高のものをチェックしたいと思います。
Tがnullに等しい場合は、私が最初に行くよ 自由なsに、メモリがGETによって返さ
文字列、その後、私はするつもりだ エラーを示すために、1を返します。
>> もし問題がないけど、私は続行するつもりだ 4ループを使用して繰り返し処理する
以下の通りである。
int型のために私は0を取得し、Nに等しく Sの文字列の長さ。
私は長い間、私はあるとして、これを行うつもりだ n以下となるよう、私
通って反復処理を含む s内のヌル終端文字。
>> そして、それぞれの反復で、私は今 私をインクリメントする予定。
一方、このループの内側に、コピー Tのi番目にS年代のi番目の文字
場所、それがTを行うには十分である ブラケット私はSブラケットIを取得します。
>> それでは、保存、コンパイルしましょう​​、と この新しいプログラムを実行します。
コピー1ドットスラッシュコピー1を作成します。
そして、私は何かのように言うよ すべて小文字でこんにちは。
そしてありがたいことに、この時間は私の 元は変更されません。
すべて小文字でこんにちは。
しかし、コピーは、確かに、大文字になります。