我对编程很陌生,因此对任何愚蠢的错误/疏忽深表歉意。
我正在尝试编写一个程序来读取具有 3 列数字的数据文件并将它们放入数组中。我想处理多达 100 个元素的文件。
问题是,在我读取了一个我知道包含 20 个元素的数据文件后,一个额外的值或 0.00000 被添加到每个数组的末尾,因此它写入了 21 个值而不是我想要的 20 个。
我的代码如下所示:
#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 个值,并且在每个数组的末尾加上了一个未经处理的 0.000000 值。后来当我尝试绘制一些数据时,这造成了很多问题。
从我在这里和其他地方所做的搜索看来,问题在于 while(!feof(f)... 循环。
如果有人可以帮助我获取仅包含 .dat 文件中的值的数组,我将不胜感激。
谢谢