Bonjour!

J'apprends le C et j'aimerais lire un fichier ligne par ligne... grâce à une fonction.

Mon bout de code marche très bien quand je le laisse dans le main et pas du tout quand je le met dans une fonction que j'appelle dans le main.

La première partie du code écrit dans un fichier 10 chiffres par lignes jusqu'à N et ferme le fichier.

La 2eme partie (ma fonction qui marche pas) est censé lire les lignes du fichiers une par une et les afficher en retournant le nombre de ligne lues.

Voici le code raté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
#include <stdio.h>
 
unsigned int N ()
{
  unsigned int n;
  printf ("Veuillez saisir le nombre de chiffre a afficher:\n");
  scanf ("%u",&n);
  printf("Vous avez saisi %u\n",n);
  return n;
}
 
void Aff( unsigned int nb, FILE * fichierTemp)
{
  unsigned int i;
  int dec;
 
  // gère la largeur du tableau en adaptant le nombre de caracteres affichés grâce a la variable dec
  if (nb>10000) dec=5;
  else if (nb>1000) dec=4;
  else if (nb>100) dec=3;
  else if (nb>10) dec=2;
  else if (nb>1) dec=1;
  else dec=0;
 
  // boucle d'affichage
  for (i=0; i<nb;i++)
  {
    fprintf (fichierTemp,"%*u",dec,i+1);
    if ((i+1)%10==0) fprintf (fichierTemp,"\n");
    else fprintf (fichierTemp,"; ");
  }
}
 
// fonction qui affiche les lignes du fichier une par une et retourne le nombre de lignes
int afficheLignesParLignes(char ligne [], int nbCaracteres,char nomFichier[])
{
 int nbLignes=0;
 
  /*Ouverture du nouveau fichier en lecture*/
  FILE * FICHIER;
  FICHIER = fopen(nomFichier, "w");
 
 while (fgets(ligne,nbCaracteres,FICHIER) !=  NULL)
  {
    printf("%s\n",ligne);
    nbLignes++;
  }
 return nbLignes;
}
 
main()
 
{
 
   // Declaration
  char NomFichier[]= "nombre.txt", mode = 'r';
  char test[10000];
  int nb;
 
  // Pointeur de réf
  FILE * FICHIER;
 
  /*Ouverture du nouveau fichier en ecriture*/
  FICHIER = fopen(NomFichier, "w");
 
  //Programme
  Aff(N(),FICHIER);
 
  fclose (FICHIER);
 
  nb=afficheLignesParLignes(afficheLignesParLignes,9999,NomFichier);
  printf ("%d\n",nb);
 
}
Je suis débutant, merci de détailler un peu vos réponses, et d'être indulgeant devant cette erreur basique...

Merci par avance!