2017-04-18 2 views
-1

Je veux mettre en œuvre un programme qui vous indique le jour où le dimanche de l'est tombe lorsque vous tapez l'année. Cependant, je ne veux pas la méthode conventionnelle avec scanf, mais plutôt lire les numéros de l'année à partir d'un fichier texte extern!Comment lire plusieurs numéros de différentes lignes dans un fichier

Ainsi, le fichier texte contient ceci:

1900 
1950 
2000 

Ce que je veux enregistrer chaque numéro dans chaque ligne dans ma variable « int année » une fois qui sera exécutée par un formular mathématique que je vais vous épargner à partir de maintenant. Ainsi, par exemple. il lit 1900, donc il passe à travers mon programme et ensuite il commence à la deuxième ligne et lit 1950 donc il passe à travers et enfin à la troisième ligne 2000.

J'ai déjà essayé quelque chose comme ça, mais ce n'est pas travail du tout:

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

le reste du code ressemble BTW comme celui-ci (pour ceux qui veulent voir les mathématiques ..)

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

Quelque chose comme ça fonctionnerait: 'while (fscanf (fp,"% d ", & year) == 1)' –

Répondre

0

en fgets fonction 1er argument doit être en « string » vous fournissez "entier". J'ai fait quelques changements dans votre code et cela fonctionne correctement. Vérifiez-le et dites-moi si ce n'est pas selon vos besoins.

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); 
}