C语言 如何扫描数据文件,并打印一个值到屏幕上,当一个数字第一次超过设定的数字



我在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;
       }
    }

最新更新