[英]How to scan a file of data and print a value to the screen when a number first exceeds a set number
我在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 reading\n");
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 reading\n");
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.