Lecture de fichier en C

Bonjpour à tous, j'ai un petit probleme qui m'embete depuis quelque temps.....alors je veux lire dans un fichier ATP6.AA,
Mais cette partie du programme ne marche pas ...pouvez vous m'aider svp !!!.je deviens folle !!!.

File *fichier;
fichier=fopen("ATP6.AA","r");
char topology[50];
for (i=0;i<50;i++){ fscanf(fichier,"%c",topology[i]);
printf("%c\n",topology[i]);
}

5 réponses

  1. Webmaster
    bon ca fait longtemps que j'ai pas fait ca... mais je vcis essayre de te repondre...

    Déjà il faudrait que tu commence par declarer tes variables ensuite tu effectue les operations...

    File *fichier; 
    
    char topology[50];
    int i;


    Ensuite tu dois tester l'ouverture du fichier
    if ((fichier=fopen("ATP6.AA","r") != NULL) 
    
    {
    // ouverture reussie
    }
    else
    {
    // erreur a l'ouverture
    }


    Ensuite tu peut lire tes caractéres:

    if ((fichier=fopen("ATP6.AA","r") != NULL) 
    
    {
    // ouverture reussie
    for(i=0; i<50; i++)
    {
    fscanf(fichier,"%c",&topology[i]); //le & je ne suis pas sur mai il me semble qu'il doit y etre...
    printf("%c\n", topology[i]);
    }
    }
    else
    {
    // erreur a l'ouverture
    }


    Je tiens a dire que cette methode est relativement barbare... (pas de teste de fin de fichier...)
    Cherche du coté de fgets ca marche bien...

    ++

    Na kaer eo va Breizh,
    gand ar mor glaz èn-dro dezi !
    0
    1. pour le &, tu peux en être sur ;p

      A la limite pour ne pas mettre le &, il aurait fallu écrire topology+i

      Car topology[i] équivaut à *(topology+i) => c'est la valeur et non l'adresse

      @++

      Vous hésitez entre Linux et Windows ?
      Vous voulez dépenser du temps ou de l'argent ? :-D
      0
    2. Webmaster
      @batmatMaecr batmaT
      (je viens de me rendre compte que c'était T et pas N :-)

      En fait j'était a peu prés sur de mon coup... mais comme je n' ai pas
      uilisé scanf ou fscanf depuis un certain temps un petit doute subsitait quand même :o)

      ++

      Na kaer eo va Breizh,
      gand ar mor glaz èn-dro dezi !
      0
  2. Salut!
    il faut en effet se pencher sur la déclaration car on declare tout avant d'utiliser une fonction, sinon c'est caca et ca marche pas. Alors mets d'abord les declarations puis le developpement de ton prog.
    A +.

    Fat_Cartman,
    Parce que je le vaux bien...
    0
    1. Je pense que tu devais te plaindre de ne pas obtenir le fichier et c'est normal :
      fscanf(fichier,"%c",topology[i]);

      Ne mettra rien pour topology[i], et pour cause : tu passes une valeur et non une adresse. fscanf tout comme scanf
      attend une adresse.

      => remplacer par :
      fscanf(fichier,"%c",&topology[i]);


      Ca devrait changer des choses déjà ;p

      @++

      Vous hésitez entre Linux et Windows ?
      Vous voulez dépenser du temps ou de l'argent ? :-D
      0
      1. bonjour
        fait attention lors de la declaration ce n'est pas File mais FILE*
        voila tout
        bon courage
        0
        1. Salut

          &topologie[i] == &(*(topologie+i))

          josch83
          0