No.1ベストアンサー
- 回答日時:
strtokは、与えられた文字列に変化を加えますが、
コード1の場合は元の文字列が書き換え不可な領域に存在します。
コード2の場合、書き換え可能な領域にコピーされているので、エラーは出ません。
コンパイルした実行可能プログラム(Windowsなら.exeファイル)の中には、
どこかに"Cat, Dog, Tiger, Bug"という文字列情報が入っています。
コンピュータは、ディスク上にある実行可能プログラムを
メモリ上にコピーしてから実行します。
通常、文字列情報が置かれるのは、メモリの書き換え不可能な領域になっています。
(最近のOSではそうなっています。これにより致命的な暴走を防いでいるのです)
つまり"Cat, Dog, Tiger, Bug"という文字列自体は、
図書館にある本のようなものです。
書き込みや切り抜きをしてはいけないことになっています。
コード1の場合、zooが指しているのは文字列情報そのものです。
対してコード2の場合、文字列情報を一度配列zoo[]にコピーしています。
「図書館の本の何ページ目」と、
「図書館の本の何ページ目をコピーした紙」の差のようなものです。
関数strtokは、与えられた文字列に\0を挟むことによって、文字列を分解します。
そのため、もともとの文字列は書き換えられてしまいます。
コード1の場合は、図書館の本を切り張りするようなもので、叱られますが、
コード2の場合、コピーした紙を切り張りするので、ご自由にどうぞというわけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語 配列とポインタについて 2 2022/06/02 11:53
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) IBM Notes9のメールをExcelVBAにて送信するコードについての質問です。 以下のコードを 3 2023/06/21 17:58
- Windows 10 windows10 PINコード エラーについて 4 2022/10/04 05:55
- 英語 問題 : I visit the ( ) with my mom every week. 3 2022/08/15 23:49
- TOEFL・TOEIC・英語検定 英検3級のライティングに関して質問があります。 定型パターンを何個か覚えておこうと考え下記を見つけま 6 2022/08/28 06:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについて。 1つ...
-
Linux Cプログラミングを学ぶた...
-
応用情報技術者試験の令和元年...
-
右ビットシフト
-
gccを行ってもexeファイルが生...
-
Notepad++の関数リスト表示の変...
-
c言語
-
これなにがちがうんですか??
-
インクリメント演算子のみを用...
-
VisualStudio2022でC言語プログ...
-
C言語 列挙型(enum型)変数について
-
どなたかこのプログラミングを...
-
大量のデータを読み込んで表示...
-
S-JIS → JIS コード変換するには
-
Windows formアプリで データグ...
-
ArduinoでMouse関数を使用して...
-
c言語
-
c言語
-
ArduinoのジャイロモジュールMP...
-
double型が正常に認識されてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列と関数の練習問題
-
システムエンジニアの適正について
-
[C言語]fputsとfprintfの違い
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
どちのほうがすきですか?
-
ArduinoのジャイロモジュールMP...
-
大量のデータを読み込んで表示...
-
gccを行ってもexeファイルが生...
-
VisualStudio2022でC言語プログ...
-
C言語 列挙型(enum型)変数について
-
こんなことてしますか??
-
C言語の関数と配列に関する質問
-
Linuxでの開発環境構築や設定の...
-
質問失礼します。 プログラム言...
-
MACで動く実行ファイルをWindow...
-
WindowsのCapsLock(キャップス...
-
これなにがちがうんですか??
-
卒業研究でよく分からないとこ...
-
gcc13.2のバグ?
おすすめ情報