Problème lecture fichier en C (débutant)

Résolu/Fermé
Gawelle - 17 avril 2010 à 13:24
 Gawelle - 17 avril 2010 à 17:47
Bonjour,
Je suis débutante en matière de programmation C. Après plusieurs heures de prises de tête (en vain), je viens vers vous pour vous demander de l'aide. Je souhaite faire un programme qui à un moment donné lit un fichier. Je pense que je ne maitrise pas du tout la fonction fscanf.

Le fichier est du type :

Sur la première ligne: le nombre d'atomes dans le système moléculaire.
Sur la deuxième ligne: une ligne de commentaire (vide dans le cas présent)
Puis dans l'ordre pour chaque ligne:
1ère donnée : type d'atome
2ème donnée (sur 3 colonnes) : positions x, y et z
3ème donnée : molécule à laquelle appartient l'atome
4ème donnée : charge (en électron)
5ème donnée (sur deux colonnes) : paramètres de van der Waals de l'atome (r et e )

6

H 0.000000 0.000000 0.000000 1 0.2 0.600 0.016
O 0.000000 0.000000 0.950000 1 -0.4 1.721 0.210
H 0.895669 0.000000 1.266667 1 0.2 0.600 0.016
H -2.004243 -1.702643 2.393612 2 0.2 0.600 0.016
O -2.676493 -2.171643 2.873840 2 -0.4 1.721 0.210
H -3.279350 -1.549596 3.263868 2 0.2 0.600 0.016


Ce que j'ai fait :

h2o_h2o = fopen("h2o_h2o.xyz","r");

if(h2o_h2o)
{
		fscanf(h2o_h2o,"%d\n\n",&nb_ato_tot);

		for (i=1;i<=nb_ato_tot;i++)
			{
				fscanf(h2o_h2o,"%c %f %f %f %d %f %f %f\n",&molecule[i].type,&molecule[i].x,&molecule[i].y,&molecule[i].z, &molecule[i].appartenance,&molecule[i].charge,&molecule[i].vdw_r,&molecule[i].vdw_e);
			}

		chargement=1;
		printf("%s\n\n","Chargement depuis le fichier h2o_h2o.xyz reussi !");
							
	}
else
	{
		printf("%s\n\n","Impossible de lire le fichier h2o_h2o.xyz !");
	}

fclose(h2o_h2o);


J'ai fait un test et j'arrive seulement à lire le nombre d'atomes total correctement, soit la première ligne, le reste est complètement faux.
Le problème peut-il venir de la lecture de la ligne de commentaire (vide)?

J'espère avoir été suffisamment claire, ce n'est pas facile de parler d'un sujet qu'on ne maîtrise pas ou très peu.

Merci d'avance à ceux qui essayerons de m'éclairer.
A voir également:

1 réponse

Merci pour ce lien, c'est très clair. Je viens de trouver la cause de mon problème.
0