リソースファイルの例
えんぴつ,50
けしごむ,100
と、入ってたとするじゃん。
これを、以下の構造体配列にぶっこむ。
struct List{
  char name[16];
int price;
}
struct List list[16]
これを読む込むとすると
fscanf(fp"%s,%d",list[i].name, &list[i].price);
普通に考えると、iをインクリメントしながら、一行ずつ読む込むわけじゃん。
で、これを実際にやると、
list[0].name=えんぴつ,50
list[0].price=????(初期化されず)

となっちゃうんですよ。
でも一方で、区切り文字を半角スペースで出力した場合、
fscanf(fp"%s半角スペース%d",list[i].name, &list[i].price);
となるわけです。これを実際にやると、
list[0].name=えんぴつ
list[0].price=50

当然といえば当然ですが、こうなります。
半角スペースはcでは区切りと認識されるが、,は区切り文字として認識してくれないので、文字列に格納されちゃうわけですね。
というわけで、csvファイルをcで読み込ませるときに文字データが混ざっている場合は、区切り文字を半角スペースにすると楽に処理できます。

コメント

お気に入り日記の更新

最新のコメント

この日記について

日記内を検索