• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルが読み込めない)

ファイルが読み込めない

このQ&Aのポイント
  • testのなかみをtest, 22.2, 33.3として、Visual C++ 2005でこれをコンパイルすると、わけのわからない数字がでてきます。
  • 初心者なのでどこが間違ってるのかわかりません。
  • #Cプログラミング #ファイル読み込み #コンパイルエラー #初心者

質問者が選んだベストアンサー

  • ベストアンサー
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.1

scanfの%s指定は区切り記号としてカンマを認めていないからです。 ※testの中の全角スペースは転記する際の間違いと判断しました。 方法としては次の3つの方法があるかと思います。 1) fgetsで1行文字列として取り込んで文字列分解は自前で行う。 2) testの区切り記号をスペースかタブに変更する。 3) 書式指定を "%[^,],%lf,%lf" にする。  ※コンパイラによっては動かない。VC++2005では動く。

nichirei
質問者

お礼

ありがとうございました。 お蔭様で動きました。 3) 書式指定を "%[^,],%lf,%lf" にする。 の方法でクリアしました、Sのかわりの[^,]はどう言うことですか。 素人にはさっぱりわかりません。 どこで調べればいいのか? 大変助かりました。

その他の回答 (1)

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.2

scanf/sscanf/fscanfは書式指定に正規表現が使えます。 「scanf 正規表現」あるいは「scanf デリミタ」等で検索すれば何か解説しているページが見つかります。 scanfを使うことはまず無いので詳細は覚えてませんが完全な正規表現ではなく<なんちゃって正規表現>だったような気がします。 ※文字列をカンマ区切りに分解する関数を作り置きしてありscanfを使う必要が無いので。

nichirei
質問者

お礼

重ねてありがとうございます、また必ずわからないことがあると思います、その時はまたよろしくお願いします。

関連するQ&A