Affichage en C

Fermé
Laura - 13 mai 2003 à 17:30
 pouet - 13 mai 2003 à 21:57
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

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
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
pouet > loulou
13 mai 2003 à 21:57
tu essaies de montrer que tu sais utiliser printf?
je pense que laura aurait plus progresse en cherchant des solutions.

--
pouet
0