No.1ベストアンサー
- 回答日時:
strtok()はポインタで指定された文字列にNULL文字を埋め込んでいきます。
ですから、第1引数に文字列定数を指定することは出来ません。ご参考までに以下のURLをご覧ください。
参考URL:http://www9.plala.or.jp/sgwr-t/lib/strtok.html
この回答へのお礼
お礼日時:2005/04/27 03:04
第一引数が変更されるのですね。納得いきました。
確かにマニュアルを見ると
char *
strtok(char *str, const char *sep);
となってますので、constではないところが原因だったと
いうこですね。
ご回答ありがとうございました。
No.2
- 回答日時:
char *t = "123.456";
の意味は、
・ポインタ変数「t」を使えるようにする。
・ポインタ「t」は、「書き換え不可能領域に用意される文字列"123.456"のアドレス」を指すように初期化される
ということです。ちなみにこの書き換え不可能領域に用意される文字列を文字列リテラルといいます。strtok()は、引数のポインタの先にある領域を書き換える凶悪な関数で、この場合文字列リテラルを書き換えようとして、エラーになっています。ちなみに処理系によっては、エラーにならない場合もあります。
一方、
char t[] = "123.456";
の意味は、
・ char t[] = {'1', '2', '3', '.', '4', '5', '6', '\0'};
ということで、つまり、要素数8の配列tを用意し、
それを初期化しているワケです。なので、悪名高きstrtok()を使っても、この配列tの内容が書き換わるだけなので、全然OKという訳です。
どうでしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 少しの疑問 4 2022/11/08 02:48
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# 【C言語】全角文字の配列を、全角のまま1文字ずつ出力する方法 4 2023/05/09 15:08
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
WM_CHAR or WM_KEYDOWN の「wPa...
-
WritePrivateProfileString
-
文字列のswap
-
char*を初期化したいのですが
-
char AA[]{"全角文字"};から"全...
-
char 文字列型 の表現範囲が-12...
-
fstream型オブジェクトを関数の...
-
動的メモリの初期化方法について。
-
ポインタで詰まりました;
-
CStringからchar*への型変換に...
-
Run-Timeエラーの原因に関して...
-
C言語を用いた環境変数の作成/...
-
csvファイルを構造体に格納した...
-
[C] 構造体メンバーのカンマ区...
-
ポインタを使用 [数字列を数値...
-
const char* s1とただのchar s1...
-
fgetc( )の戻り値はなぜ整数??
-
std::stringクラスのc_str()で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
strcat関数を自作したいです
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
char 文字列型 の表現範囲が-12...
-
const char* s1とただのchar s1...
-
wsprintf( ポインタ , "%d" , "...
-
c言語でポインタ変数を用いた配...
-
char型にint型の数値を代入する。
-
C言語で文字列をかえす正しい書...
-
C++17で、unsigned char * 配列...
-
共用体について
-
エクセルのMID関数は、C言語では?
おすすめ情報