fscanfでカンマ区切りの文字列を読み出したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
山崎

fscanfでカンマ区切りの文字列を読み出したい

#1

投稿記事 by 山崎 » 16年前

何度もお世話になっております、山崎です。
今回は、fscanf(本当はDXライブラリのFileRead_scanfなのですが)について
皆様のお知恵を貸してほしいと思い参りました。

現在、マップの内容が記述されたテキストファイルを読み込み、
マップのために確保された構造体の配列にファイルの内容を格納する処理を作っております。

読み込むテキストファイルには、

130,1 130,1 140,2 150,3
130,2 140,2 100,4 200,4
...
...

このように、short intとunsigned charが
スペースとカンマに区切られてたくさん記述されております。
「130,1」でひとつの構造体の内容を表しております。
カンマの前の数値をshort intへ格納し、カンマの後ろの文字をunsigned charに格納したいと思っています。

このファイルを読み込んで最終的には構造体のメンバに次々内容を格納していきたいと思い
次のコードを試しに書いたのですが、ビルドは通るのですが実行時エラーとなります。
なお、下のコードはテストのため、ファイルの全てを読み込まず最初の一行だけ読み込んでいます。

//"testtext.txt"は読み込むファイル名
short int testBuf;
unsigned char testBuf2;
int testMapFileHandle=FileRead_open("testtext.txt");
FileRead_scanf(testMapFileHandle,"%d,%c ",testBuf,testBuf2);
printfDx("%d\n%c\n",testBuf,testBuf2);
FileRead_close(testMapFileHandle);

どうすればファイルのカンマとスペースで区切られた文字列を、
short intとunsigned charに読み出すことができるのでしょうか。
基本的な質問かもしれませんが、皆様のお知恵をお貸ししてほしいと思います。

toyo

Re:fscanfでカンマ区切りの文字列を読み出したい

#2

投稿記事 by toyo » 16年前

FileRead_scanf(testMapFileHandle,"%d,%c ",testBuf,testBuf2);

FileRead_scanf(testMapFileHandle,"%d,%c ",&testBuf,&testBuf2);
では

toyo

Re:fscanfでカンマ区切りの文字列を読み出したい

#3

投稿記事 by toyo » 16年前

それと%cだと'1'が49になりますがそれで良かったですか。

山崎

Re:fscanfでカンマ区切りの文字列を読み出したい

#4

投稿記事 by 山崎 » 16年前

toyoさん
ご返信、まことにありがとうございます。

本当に恥ずかしいです、こんな基本的なところでつまずきますとは・・・。
穴があったら入りたいです。
「&」をつけたところ、見事に動きました。

&をつけていろいろ試してはいたのですが、
ほかのバグに引っかかっていたようで「&がないのはバグの原因じゃないのか」と
思い込んでおりました・・・。

山崎

Re:fscanfでカンマ区切りの文字列を読み出したい

#5

投稿記事 by 山崎 » 16年前

toyoさん

あ、はい 気を遣って頂き本当にありがとうございます。
0~255の値なら何でもいいので、その部分は問題ありません。

Justy

Re:fscanfでカンマ区切りの文字列を読み出したい

#6

投稿記事 by Justy » 16年前

 short intに対応するのは %dじゃないですよ。

閉鎖

“C言語何でも質問掲示板” へ戻る