2017-04-18 74 views
-1

我想实现一个程序,告诉您在哪一天东部星期日在您输入年份时会出现。但是我不想用传统的scanf方法,而是从extern文本文件中读取年份数字!如何从一个文件中的不同行读取多个数字

所以文本文件包含此:

1900 
1950 
2000 

我想是为了节省每个数字在每一行中我的“廉政年”变量一次并通过数学公式推来运行,我会饶你从现在开始。 因此,例如它读1900,所以它通过我的程序运行,之后,它开始在第二行,并读取1950年,所以它运行通过和最后在2000年第三行。

我已经尝试过这样的东西,但它不在所有的工作:

FILE *fp; 
fp = fopen("bla.txt", "r"); 
while (!feof(fp)) 
{ 
fgets(year, 4, fp); 
} 

的代码的其余部分BTW看起来是这样的(对于那些谁希望看到数学..)

int main() 
{ 
    int year; 
    int a; 
    int b; 
    int c; 
    int d; 
    int e; 
    int easter_sunday ; 


    a = year % 19 ; 
    b = year % 4 ; 
    c = year % 7 ; 
    d = (19 * a + 24) %30 ; 
    e = (2 * b + 4 * c + 6 * d + 5) % 7 ; 
    easter_sunday = (22 + d + e) ; 

    if (easter_sunday > 31) 
    { 

     printf("Easter Sunday in %d", year); 
     printf(" is April %d\n", easter_sunday - 31); 

    } 
    else 
    { 

     printf (" Easter Sunday in %d", year); 
     printf (" is March %d\n", easter_sunday); 

    } 

    fclose(fp); 
+0

像这样的东西会工作:'while(fscanf(fp,“%d”,&year)== 1)' –

回答

0

fgets函数第一个参数必须是“字符串”,而你提供“整数”。 我在你的代码中做了一些改变,它可以正常工作。检查它并告诉我它是否不符合您的要求。

int main() 
{ 
int year; 
int a; 
int b; 
int c; 
int d; 
int e; 
int easter_sunday ; 
FILE *fp; 

fp = fopen("bla.txt", "r"); 
while (fscanf(fp, "%d", &year) != EOF) { 
a = year % 19 ; 
b = year % 4 ; 
c = year % 7 ; 
d = (19 * a + 24) %30 ; 
e = (2 * b + 4 * c + 6 * d + 5) % 7 ; 
easter_sunday = (22 + d + e) ; 

if (easter_sunday > 31) 
{ 

    printf("Easter Sunday in %d", year); 
    printf(" is April %d\n", easter_sunday - 31); 

} 
else 
{ 

    printf (" Easter Sunday in %d", year); 
    printf (" is March %d\n", easter_sunday); 

} 
} 
fclose(fp); 
} 
相关问题