私はプログラミングにかなり慣れていないので、ばかげたエラー/見落としをお詫びします。
3 列の数値を含むデータ ファイルを読み取り、それらを配列に入れるプログラムを作成しようとしています。最大で 100 個の要素のファイルを処理したいと思います。
問題は、20 個の要素を含むことがわかっているデータ ファイルを読み取った後、余分な値または 0.00000 が各配列の末尾に平手打ちされ、必要な 20 個ではなく 21 個の値が書き込まれることです。
私のコードは次のようになります。
#include <stdio.h>
#include <cpgplot.h>
#include <stdlib.h>
#include <math.h>
#define MAXELEMENTS 100
int main()
{
/*Declare variables*/
float volume[MAXELEMENTS], temp[MAXELEMENTS], pressure[MAXELEMENTS];
int cnt = 1;
int i;
FILE *f;
char headings[MAXELEMENTS];
char filename[100];
/*Prompt user for file name*/
printf("Please enter the name of the file: ");
scanf("%s", &filename);
f = fopen(filename, "r");
if(f == NULL)
{
printf("File not found\n");
exit(EXIT_FAILURE);
}
/* Buffer line to read the headings of the data*/
fgets(headings, MAXELEMENTS, f);
/* Read records from the file until the end is reached*/
while(!feof(f) && cnt<MAXELEMENTS){
if (fscanf(f, "%f %f %f\n", &volume[cnt], &temp[cnt], &pressure[cnt]) > 0) cnt++;
}
そのため、配列を印刷すると、必要な 20 個の値に加えて、それぞれの末尾に unwated 0.000000 値が追加されます。これにより、後でデータの一部をプロットしようとすると、多くの問題が発生しました。
ここや他の場所で行った検索から、while(!feof(f)... ループが問題であるように見えます。
.dat ファイルの値だけを含む配列を取得するのを手伝ってくれる人がいれば、本当に感謝しています。
ありがとう