Problème de logique algorithmique (language C

Résolu
cap'tain sheeps -  
 cap'tain sheeps -
Bonjour,
J'ai un gros problème que je n'arrive pas à résoudre et qui est plutôt bisarre :

j'aimerais à partir d'un fichier écris avec des lignes du type :

0| | | |006|100|+S| |R|0.5|BNA/1|RT.3/Z26|RT.3/Z28|RT.3/Z30|


récupérer dans un tableau d'enregistrement les nom des connecteurs et contacts en enlevant les "|" , "/", et les infos du début.
J'ai donc fais ce code (j'ai seulement gardé la partie qui pose problème) :



while(fgetc (fichierFil) != 10)//10 étant l'entier associé au caractère "retour à la ligne"
            {
                //on saute les renseignements qui ne nous interresent pas
                while(iSaut < 10)
                {
                    carac = fgetc (fichierFil);
                    if(carac == 124)//124 étant l'entier associé au caractère "|"
                    {
                        iSaut++;
                    }
                }
                //on récupere les connexion dans le tableau tableauConnections
				if( testPremiereBoucle == 1)
				{
					carac = fgetc (fichierFil);
					testPremiereBoucle = 0;
				}
				while(carac != 47)//47 étant l'entier associé au caractère "/"
				{
					tableauConnections[i].nomConnecteur = carac;
					fprintf(fichierTest,"\n %d nom du connecteur : %c", i, tableauConnections[i].nomConnecteur);
					carac = fgetc (fichierFil);
				}
				carac = fgetc (fichierFil);
				while(carac != 124)
				{
					tableauConnections[i].contact = carac;
					fprintf(fichierTest,"\n %d nom du contact : %c", i, tableauConnections[i].contact);
					carac = fgetc (fichierFil);
				}
				i++;
            }





Le problème est que dans mon fichierTest, il ne veut pas prendre la première lettre du connecteur des connections mis à part la première (dans cette exemple, il ne me donnera pas le R, le R puis le R :
Voyez par vous meme le contenu de mon fichier test:


0 nom du connecteur : B
0 nom du connecteur : N
0 nom du connecteur : A
0 nom du contact : 1
1 nom du connecteur : |
1 nom du connecteur : T
1 nom du connecteur : .
1 nom du connecteur : 3
1 nom du contact : Z
1 nom du contact : 2
1 nom du contact : 6
2 nom du connecteur : |
2 nom du connecteur : T
2 nom du connecteur : .
2 nom du connecteur : 3
2 nom du contact : Z
2 nom du contact : 2
2 nom du contact : 8
3 nom du connecteur : |
3 nom du connecteur : T
3 nom du connecteur : .
3 nom du connecteur : 3


J'ai essayé plusieurs choses mais c'est encore plus bisarre :
Si je saute un caractère à toutes les connections en changeant la condition du if en 1 :


if(1)
				{
					carac = fgetc (fichierFil);
					testPremiereBoucle = 0;
				}


Le fichier test me donne ca :

0 nom du connecteur : B
0 nom du connecteur : N
0 nom du connecteur : A
0 nom du contact : 1
1 nom du connecteur : T
1 nom du connecteur : .
1 nom du connecteur : 3
1 nom du contact : Z
1 nom du contact : 2
1 nom du contact : 6
2 nom du connecteur : T
2 nom du connecteur : .
2 nom du connecteur : 3
2 nom du contact : Z
2 nom du contact : 2
2 nom du contact : 8
3 nom du connecteur : T
3 nom du connecteur : .
3 nom du connecteur : 3


quelqu'un pourrait-il m'expliquer ce que mon programme a contre ces R? Parce que ca fait un petit moment que je suis sur ce problème ...
Merci d'avance !

Sheeps.


3 réponses

cap'tain sheeps
 
Je pensais que le titre en aurait captivé plus d'un ...
Je ne peux vraiment pas avancer tant que je n'ai pas cette partie du code alors UP !
0
le père
 
Quand tu es passé une première fois dans la boucle, tu viens de lire le | qu'il y a entre 1 et RT.3
ensuite, tu remontes au while :
while(fgetc (fichierFil) != 10)

Ce while lit aussi un caractère ; il lit donc le R sans le mettre dans carac.
La suite est logique...
tu peux t'en tirer simplement :
while((carac=fgetc (fichierFil)) != 10)
0
cap'tain sheeps
 
pfff et 3h pour ca ...
j'étais trop habitué à faire des copier/coller de mon "carac = fgetc (fichierFil)" meme quand ca servait à rien de le stocker que j'étais persuadé de l'avoir fais ici aussi.

Ben alors la ! Toi ! Je te remercie de tout mon coeur !
0