トップページ > プログラム > 2016年01月13日 > kNuNR485

書き込み順位&時間帯一覧

4 位/176 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000042006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
278 :デフォルトの名無しさん[]:2016/01/13(水) 20:41:54.84 ID:kNuNR485
fscanfでcsvファイルからデータを読み出したいのですが、
fscanfの返り値がおかしく、EOFとならずに処理が終了しません。

データの列要素は15なので、返り値も15となるはずなのですが、
「1」と表示されてしまいます。

行は2千万行近くありますが、その値を過ぎても終了しません。

csvファイルのデータ容量は1.42GBあります。
助言宜しくお願いします。

問題だと思われるループとfscanfの部分を記載します。

while(ret=fscanf(fp,
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
279 :デフォルトの名無しさん[]:2016/01/13(水) 20:44:10.04 ID:kNuNR485
while(ret=fscanf(fp,"%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf",&a,&b,&c,
&d[0][0],&d[0][1],&d[1][0],&d[1][1],&d[2][0],&d[2][1],
&e[0][0],&e[0][1],&e[1][0],&e[1][1])!=EOF){

    処理等

}
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
281 :デフォルトの名無しさん[]:2016/01/13(水) 20:49:56.90 ID:kNuNR485
>>280
すいません書き忘れてました。

FILE *fp

fp=fopen("example.csv","r");

if(fp==NULL){
printf("no file\n");
exit(0);
}
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
285 :デフォルトの名無しさん[]:2016/01/13(水) 20:58:57.11 ID:kNuNR485
retの部分は解決できました。ありがとうございます。
今確認してみたところ、最終行を迎えたあと、fscanfの返り値は0となっていました。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
286 :デフォルトの名無しさん[]:2016/01/13(水) 21:02:30.81 ID:kNuNR485
最終行を迎えてもEOFである-1が返ってこない理由としては、どのような理由が考えられるでしょか?
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
287 :デフォルトの名無しさん[]:2016/01/13(水) 21:09:44.61 ID:kNuNR485
その場しのぎですが、
while((ret=fscanf())!=0)とすることで解決しました。
エクセルファイルの作成方法が間違っていたのかもしれません。
そちらを確認したいと思います。

ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。