• 締切済み

C言語でファイルから読み込みができません。

以下のプログラムを実行すると よくわからない値が返ってきます。 なぜでしょうか?教えてください。 #include <stdio.h> void main () { FILE *fp; double a, b; int count=0; fp = fopen("test.xls", "r"); while(1) { fscanf(fp, "%lf %lf\n", &a, &b); printf("%f, %f\n", a, b); count++; if(count==10)break; } fclose(fp); } test.xlsの中身は 1.0 2.0 3.0 4.0 5.0 6.0   :   :   :   : です。 よろしくお願いします。

みんなの回答

  • sada4941
  • ベストアンサー率0% (0/1)
回答No.4

読み込むファイルの拡張子がxlsということは、Excelのファイルですか? Excelのファイルはセルに入力した文字列より前に、いろんな文字が入っています。 C言語でファイルを読むとそれらの文字列を最初に読んでしまうので、意味の分からない文字列が取れてしまいます。 メモ帳のファイルを開くからC言語で読み込もうとしているファイルを開いてみると、きっと、C言語で読み込まれた文字列と同じ文字が並んでいますよ。 C言語はOSを作るための言語ですので、何でもできてしまう代わりに、すべてを網羅して、処理をいれないとなりません。 例えば、Excelファイルの意味の分からない文字列は、おそらくですが、同じファイルなら、同じ文字列なはずです。 ですので、その文字数をカウントして、それだけ飛び越えて、文字を読むようにすると意図したことができると思います。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

既に回答ついていますが… 普通は".xls"の拡張子がついているファイルはfopen("ほにゃらら.xls", "r")のテキストモードでは読めません。 # まぁ、ふつ~のテキストファイルに拡張子xlsつけることは可能ではありますが…混乱したい人以外はそんなことやらない。 Excelでcsvで出力したんでしたらテキストモードでオープンできるでしょう。 # カンマ区切りにしたならfscanf()の書き方も変更が必要です。 ってことで、まずは指定したファイルをメモ帳なりで開いてみましょう。 あと…fopen()に失敗していないかも確認しましょう。 # 失敗していれば途中で吹っ飛んだかも知れませんけどね。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

2つの数字の間は全角スペースのようですが、 半角スペースにしてください。

noname#199489
noname#199489
回答No.1

バイナリファイル開いてるからじゃ?

この投稿のマルチメディアは削除されているためご覧いただけません。

関連するQ&A

専門家に質問してみよう