ラベル C言語 の投稿を表示しています。 すべての投稿を表示
ラベル C言語 の投稿を表示しています。 すべての投稿を表示

2016年3月11日金曜日

C言語:スペースを含む文字列の入力

若干ハマったので。

簡易的にテキストファイルからデータを持ってきたいとき、今時は使わないかもだけど、
fscanf_sなどを使っている。普通に使う分には問題ないのだけど、スペースを含む文字列
を持ってきたい時には困る。スペースを区切り文字だと勘違いしてしまうのだ。

そこで、1行づつ入力して、strtok_sを使ってトークンで区切って持ってくるのが良いみたい。
strtok_sは若干扱いにくいのでココにメモ。

// ファイルオープン
fopen_s(&fp, filename, "rb");

// 改行まで一列読み込む
fgets(str, _countof(str), fp);

// これでタブまでの文字列がゲットできる
str2 = strtok_s(str, "\t", &ctx);

// 二つ目以降はNULLを指定する
str3 = strtok_s(NULL, "\t", &ctx);

ざっくりこんな感じ。\tのトコはコンマとか色々入れられるらしい。ちょいとハマった。