Как отсканировать файл данных и вывести значение на экран, когда число впервые превышает установленное число - PullRequest
5 голосов
/ 25 сентября 2011

Я работаю в 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);
}

Ответы [ 2 ]

1 голос
/ 06 января 2012

Чтобы вывести его на печать первым, вы можете добавить код в функцию, подобную этой.

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

0 голосов
/ 06 января 2012

Вы также можете разорвать цикл после того, как напечатали год.

     while(fscanf(in,"%lf %lf",&d,&p)!=EOF) {
       if (p>350) { 
         printf("\nDate is %f and Population is %f",d,p);
         break;
       }
    }
...