Lecture de fichier en C

Fermé
Laura - 28 juin 2003 à 14:37
 josch83 - 30 juin 2003 à 11:36
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 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 426
28 juin 2003 à 15:26
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 jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
29 juin 2003 à 12:38
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 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 426 > batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008
29 juin 2003 à 16:25
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
28 juin 2003 à 18:51
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 jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
29 juin 2003 à 12:36
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
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
Salut

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

josch83
0