[英]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.