C : Problème d'indirection de fichier

Signaler
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
-
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011
-
Bonsoir à tous,
alors dans le cadre de mon projet de C (on va appeler ça une série TV thèque), qui doit être fait en mode console, l'utilisateur doit pouvoir effectuer les actions suivantes : ajouter un épisode, supprimer un épisode etc...

Donc tout cela fonctionne bien à partir du moment où dans le mode console j'écris ceci :

C:\Users\Jérémy\Documents\VS 2008\TVTheque\Debug\TVTheque\seriesTV.exe

et qu'ensuite ben je joue en mode console :

a
STARGATE ATLANTIS
1
2
Une nouvelle ère (2/2)
Rising (2/2)
3
Atlantis risque d'être engloutie par l'océan. L'équipe parviendra-t-elle à sauver
l'antique cité avant qu'il ne soit trop tard? Pendant ce temps, le colonel Summer est
capturé par la Gardienne des Wraith, qui s'ingénie à le torturer.
w
c:\test2.txt

Maintenant j'ai un gros problème, la prof ne va pas tester notre programme en tapant à chaque fois les instructions une à une comme on le fait en mode console. En fait elle va utiliser un fichier texte préformaté et va utiliser notre programme comme ceci :

C:\seriesTV.exe < fichierTest.txt

Cependant alors que tout marche bien dès que l'on fait tout à la main, mon programme plante à chaque fois que j'utilise cette indirection....

Pour m'aider au débuggage si l'on prend un fichier texte comme celui du dessus , ceci apparait à l'écran :

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Or je ne comprends pas pourquoi, voici le code de la fonction de lecture en mode console :

do

{
   fgets(c, 255, stdin);

   switch(*c)
   {

         case
'c':

case
'C':

if(file)ReadFile(file, hashTable);

else{

newfgets(chaine, MAXCHAR, stdin);

ReadFile(chaine, hashTable);

}

break;

case
'w':

case
'W':newfgets(chaine, MAXCHAR, stdin);

WriteFile(chaine, hashTable);

break;

case
'a':

case
'A':elt = AllocElement();

EnterInfoForAddingEpisode(elt, hashTable, chaine);

break;

case
's':

case
'S':DeleteEpisodeFromHashtable(hashTable, chaine, serieTitle, &seasonNumber, &episodeNumber);

break;

case
'm':

case
'M':

break;

case
'r':

case
'R':EnterInfoForDisplayingSummary(hashTable, chaine, serieTitle, &seasonNumber, &episodeNumber);

break;

case
'p':

case
'P':

break;}

}

while(*c !=
'q' && *c !=
'Q');

je ne comprends pas d'où viens le problème...
Si vous pouviez m'aider ce serait sympa

2 réponses

Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Je ne sais pas comment c'est foutu sous Windows, mais...
"C:\seriesTV.exe < fichierTest.txt"
Là tu passes le contenu du fichier en paramètres de l'exécutable, non ?
Or ce n'est pas ce que tu fais quand tu le lances à la main puisque, si j'ai bien compris, tu saisis les paramètres une fois le programme lancé.

Cordialement, uaip.
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011

Salut,
C:\seriesTV.exe  fichierTest.txt passe le fichier en paramètre
Sinon je crois que tu lies toujours la première ligne de ton fichier.

Cordialement,
Sébastien.