前提・実現したいこと
ファイルからfscanfを用いて数値を読み込み、ファイル末尾になったらwhile(1)ループを抜け出したい
発生している問題・エラーメッセージ
whileループを抜けられない
該当のソースコード
#include<stdio.h> #include<stdlib.h> int main(void){ FILE *fp; double x[5],y[5]; int i=0; if((fp=fopen("input.txt","r"))==NULL){ fprintf(stderr,"FILE OPEN ERROR"); exit(1) } while(1){ if(fscanf(fp,"(%lf,%lf)",&x[i],&y[i])==EOF) break; else{ printf("(%lf,%lf)",x[i],y[i]); i++; } } fclose(fp); return 0; }
困っていること
テキストファイルからfscanfで数値を読み込み、ファイル末尾の場合終了、そうでない場合読み込んだ数値を画面表示するプログラムを書きたいのですが、whileループを抜けられずセグメンテーション違反となってしまいます。
またif文の条件文について、if(fscanf~)とした場合、その時点でfscanfが実行されたことになるのでしょうか。(つまりelse文でfscanfを書く必要があるのかどうか)
なおよくある方法としてwhile((fscanf~)!=EOF)とする方法がありますが、今回はwhile(1)としてif文を使ってwhileを抜ける方法を考えたいです。
補足情報
input.txtの内容
(1.0,2.0) (-3.0,4.5) (2.5,5.0) (4.0,2.8)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/16 08:57
2021/05/16 09:02
2021/05/16 09:03
2021/05/16 09:23 編集
2021/05/16 09:29