Probleme sur fonction strcmp
Bonjour,
on a un probleme sur ce morceau de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
void ajouterPanne()
{
int nbMachines;
int i = 1;
Pannes* nouvellePanne;
char lecture[11];
int trouve=0;
char nomMachine[11];
while (trouve == 0)
{
FILE *machine = fopen("data\\machine.txt", "rt");
fgets( lecture , 4, machine );
sscanf(lecture, "%d", &nbMachines);
puts("Entrez le nom de la machine");
scanf("%s", &nomMachine);
do
{
fgets( lecture, 10, machine);
if( strcmp(nomMachine, lecture) == 0) trouve = 1;
i++;
}while (trouve == 0 && i < nbMachines);
if(trouve == 0 ) puts("nom de machine incorrect");
fclose (machine);
}
} |
l'utilisateur doit entrer un "nomMachine", et ce "début de fonction" essaye de trouver si le ce nom en question appartient a une liste de machine précisée dans le fichier machine.txt
forme du fichier :
Code:
1 2 3 4 5 6 7
|
5 //nombre de nom de machines dans le fichier
machine1
machine2
machine3
machine4
machine5 |
il semble que ca soit la ligne en rouge qui pose un probleme étant donné que trouve garde la valeur 0 à la fin de l'execution.
Merci d'avance
Re: Probleme sur fonction strcmp
Citation:
Code:
1 2 3 4
|
fgets( lecture , 4, machine );
[...]
scanf("%s", &nomMachine); |
Tu as de la chance... tu ferais l'inverse (sscanf puis fgets...) tu ne comprendrait pas "Pourquoi le programme me laisse pas taper le nom de la machine ?"... [1]
Bonne résolution pour 2006 : banir scanf
Citation:
Envoyé par Skyrunner
Apres ton fgets met un
machine[strlen(machine)-1] = '\0';
Peut être dangereux... Il faut vérifier que le caractère est un '\n', sinon, c'est que le buffer est plein, et on perd le dernier caractère lu !
-- edit --
[1] D'ailleurs je parie qu'il y avais deux scanf avant :lol: et que le premier à été remplacé par un fgets parceque le comportement n'était pas celui prévu ;) ... Je me trompe ?