#include <stdio.h>
#define N 20
#define M 5
typedef struct plane_map {
double longitude; /* [deg] */
double latitude; /* [deg] */
} PLANE_MAP_TYPE;
int main(void){
FILE *fp_p;
const char plane_map[] = "test.txt";
int i;
PLANE_MAP_TYPE a;
fp_p = fopen( plane_map , "r");
char date1[N];
char date2[N];
for(i=0;i<M;i++){
fgets(date1,N,fp_p);
if(date1[0]!='\n'){
sscanf(date1, "%lf%lf", &a.longitude, &a.latitude);
printf("%.2f %.2f\n", a.longitude, a.latitude);
}
if(date1[0]=='\n'){
printf("\n");
}
}
return 0;
}
/*
3行目を空白にしたいのに
なぜか3行目が2行目をコピーしてしまいます
実行結果を以下に記す
12.00 12.00
11.00 11.00
11.00 11.00
20.00 20.00
30.00 30.00
ファイル(test.txt)は以下に記す
12 12
11 11
20 20
30 30
*/
空行の判定
Re: 空行の判定
フォーラムルールに従って、
・codeタグを使用する。
・環境(OS やコンパイラなど)を書く。
そして、送信ボタンを押す前に、プレビューボタンを押して、
質問してください。
質問の現象は、Windows で VC++ を使っても、
Linux で gcc を使っても再現しませんが、
Windows 上で cygwin の gcc を使うと再現しました。
空行といっても、先頭にスペースが入っているかもしれません。
私なら for文を次のようにします。 date1 という名前は data1 のほうが適切なのでは?
・codeタグを使用する。
・環境(OS やコンパイラなど)を書く。
そして、送信ボタンを押す前に、プレビューボタンを押して、
質問してください。
質問の現象は、Windows で VC++ を使っても、
Linux で gcc を使っても再現しませんが、
Windows 上で cygwin の gcc を使うと再現しました。
fgets(date1,N,fp_p);
の後に
for (int j = 0; date1[j]; j++) printf(" %02x", date1[j]);
putchar('\n');
を入れると、原因が分かるでしょう。
私なら for文を次のようにします。 date1 という名前は data1 のほうが適切なのでは?