[英]How can I read an array of data from a text file in my code in C programming?
我有一个代码可以读取包含大量数字的文本文件。 我使用下面的代码来访问它,但这仅占第一行。
我还有其他99行要访问的数据。 如何使其读取其他99行数据?
fscanf(fp1,"%lf,%lf,%lf,%lf",&a,&b,&c,&d);
正如elia在评论中提到的那样,最好的策略是读取整行,然后使用sscanf
对其进行解析。
char buffer[1024];
while(fgets(buffer, sizeof buffer, fp1))
{
if(sscanf(buffer,"%lf,%lf,%lf,%lf",&a,&b,&c,&d) != 4)
{
fprintf(stderr, "Invalid line format, ignoring\n");
continue;
}
printf("a: %lf, b: %lf, c: %ld, d: %lf\n", a, b, c, d);
}
另一种选择是继续阅读直到\\n
:
while(1)
{
if(fscanf(fp1,"%lf,%lf,%lf,%lf",&a,&b,&c,&d) != 4)
{
fprintf(stderr, "Invalid line format, ignoring\n");
if(clear_line(fp1) == 0)
{
fprintf(stderr, "Cannot read from fp1 anymore\n");
break;
}
continue;
}
printf("a: %lf, b: %lf, c: %ld, d: %lf\n", a, b, c, d);
if(clear_line(fp1) == 0)
{
fprintf(stderr, "Cannot read from fp1 anymore\n");
break;
}
}
和clear_line
看起来像这样:
int clear_line(FILE *fp)
{
if(fp == NULL)
return 0;
int c;
while((c = fgetc(fp)) != '\n' && c != EOF);
return c != EOF;
}
这个:
fscanf(fp1,"%lf,%lf,%lf,%lf",&a,&b,&c,&d);
提示输入文件中每行只有4个数字。
(如果您遵循有关如何提出问题的行规,例如通过张贴[mcve],我们可能会提供很多帮助)
发布的代码表明:
float a;
float b;
float c;
float d;
并且该行上的数字用逗号分隔
建议:
#define MAX_LINES 100
float a[ MAX_LINES ];
float b[ NAX_LINES ];
float c[ MAX_LINES ];
float d[ MAX_LINES ];
size_t i = 0;
while( i<MAX_LINES && 4 == fscanf( fp1, "%lf,%lf,%lf,%lf", &a[i], &b[i], &c[i], &d[i] )
{
// perhaps do something with the most recent line of data
i++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.