Affichage en C

Laura -  
 pouet -
Bonjour à tous, j'ai un gros probleme en C, en fait je debute !!
Mon probleme c'est que j'ai errit un petit programme qui va lire dans un fichier, et qui va mettre les caracteres une par une dans un vecteur.
Le probleme est que quand j'execute mon programme, il me renvoi soit des 0 si je laisse &, sinon il me renvoi null.
je ne comprends plus rien !!
Merci
le programme est le suivant:

#include<stdio.h>
#include<stdlib.h>
char *topologie;
int seqNum;
FILE *fichier;
int i;

main(){
fichier=fopen()"fich.txt","rt");
fscanf(fichier, "%d\n", &seqNum);
topologie=(char*)malloc(sizeof(char)*(3*seqNum+1));
for (i=0 ; i<(3*seqNum+1);i++)
{fscanf(fichier,"%s",topologie[i]);
printf("%s\n",topologie[i]);
}
}

1 réponse

  1. pouet
     
    salut,

    ton code ne compile pas. change de compilateur si celui ci ne t a pas indique les erreurs.

    #include <stdio.h>
    #include <stdlib.h>
    char *topologie;
    int seqNum;
    FILE *fichier;
    int i;
    /*
    des globales? interdit.
    declare les dans le corps de ta fonction.
    */
    main(){
    /*
    ce n est pas defini par la norme. tu as soit:
    int main (void)
    soit
    int main(int argc, char *argv[])
    */
    fichier=fopen()"fich.txt","rt");
    /*
    il faut tester le pointeur retourne par fopen
    je suppose que le 't' est une faute de frappe
    */
    fscanf(fichier, "%d\n", &seqNum);
    topologie=(char*)malloc(sizeof(char)*(3*seqNum+1));
    /*
    le cast ne sert a rien.
    sizeof(char) est definit par la norme comme etant egal a 1, donc inutile.
    je ne comprends plus ce que tu fais.
    quand il y a 5 dans le fichier, tu reserves de la place pour 15 caracteres, et?
    */
    for (i=0 ; i<(3*seqNum+1);i++)
    {fscanf(fichier,"%s",topologie[i]);
    /*
    attention, topologie[i] n est pas un char* mais un char
    tu veux surement dire topologie + i
    */
    printf("%s\n",topologie[i]);
    /*
    attention, topologie[i] n est pas un char* mais un char...
    */
    }
    }

    evite au maximum les globales, ainsi que scanf et ses amis. ne confond pas les pointeurs et le type pointe. respecte la norme.
    voili voilou.

    --
    pouet
    0
    1. loulou
       
      essaye en changant tes trois lignes par celles-ci.
      fscanf(fichier, "%c\n", seqNum);
      fscanf(fichier,"%c",topologie[i]);
      printf("%c\n",topologie[i]);
      0
      1. pouet > loulou
         
        tu essaies de montrer que tu sais utiliser printf?
        je pense que laura aurait plus progresse en cherchant des solutions.

        --
        pouet
        0