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のトコはコンマとか色々入れられるらしい。ちょいとハマった。

0 件のコメント:

コメントを投稿