Lecture de fichier en C

Laura -  
 josch83 -
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]);
}
A voir également:

5 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
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
batmat Messages postés 1871 Date d'inscription   Statut Membre Dernière intervention   114
 
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
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > batmat Messages postés 1871 Date d'inscription   Statut Membre Dernière intervention  
 
Maecr 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
Utilisateur anonyme
 
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
batmat Messages postés 1871 Date d'inscription   Statut Membre Dernière intervention   114
 
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
Lilin
 
bonjour
fait attention lors de la declaration ce n'est pas File mais FILE*
voila tout
bon courage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
josch83
 
Salut

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

josch83
0