调用这个函数
我在C工作,我是很新的(2周前)。基本上,我有一个文件,其中有两列数据由一个空格分隔。我需要从文件中逐行读取,并确定第二列第一次超过某个数字是什么时候。当它找到我要查找的行时,我希望它将第一列的相应数字打印到屏幕上。两列按数字顺序排列。
更具体地说,column1是年份,column2是人口。当人口第一次超过某个数字X时,我要打印相应的日期。
到目前为止,我的代码可以扫描并查找人口> X的时间,然后打印日期,但是它打印人口> X的每个日期,我不能让它只打印第一次超过X的时间,而不打印其他时间。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *in;
int ni,i;
double d,p;
if((in=fopen("pop.dat","r"))==NULL) {
printf("nCannot open pop.dat for readingn");
exit(1);
}
while(fscanf(in,"%lf %lf",&d,&p)!=EOF) {
if (p>350) printf("nDate is %f and Population is %f",d,p);
}
fclose(in);
return(0);
}
要让它只打印第一个,您可以将代码添加到这样的函数中。
double getFirstDate(const char* filename)
{
FILE *in;
int ni,i;
double d,p;
if((in=fopen(filename,"r"))==NULL) {
printf("nCannot open pop.dat for readingn");
exit(1);
}
while(fscanf(in,"%lf %lf",&d,&p)!=EOF) {
if (p>350)
{
printf("nDate is %f and Population is %f",d,p);
fclose(in);
return p;
}
fclose(in);
return -1;
}
然后从main
也可以在打印出年份后中断循环。
while(fscanf(in,"%lf %lf",&d,&p)!=EOF) {
if (p>350) {
printf("nDate is %f and Population is %f",d,p);
break;
}
}