Bonjour
J'ai un problème assez bizarre, je pense savoir d'où ça vient, mais pas comment y remédier.
Je débute en C, j'ai crée un programme en PHP que je voudrais convertir en C sans interface, juste en command-line, j'ai donc crée ce script pour la base:
En gros, l'utilisateur tape un lettre et une commande s'exécute, ça marche, mais il y a un hic: à chaque lettre tapée, le caractère ">" est répété deux fois:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40
41 int main() { printf("Usage:\n"); printf("c : Create a new file.\n"); printf("q : Quit.\n"); char command; while(1) { printf(">"); command=getchar(); if(command=='c') { printf("Type file name:\n"); char filename[80]; scanf("%s",filename); char buf[]="test\n"; int fd; fd = open(filename, O_CREAT | O_RDWR, 0644); write(fd, buf, sizeof buf); } if(command=='b') { printf("blablabla\n"); } if(command=='q') { printf("Quit\n"); break; } } return 0; }
Je pense savoir d'où ça vient:
quand je tape disons 2 lettres à la suite j'obtiens ça:
>>>
et si j'appuie juste sur entrer ça donne:
> (ce qu'il faut)
J'ai l'impression que quand je tape un caractère, le caractère de retour à la ligne est aussi pris en compte, et à cause de la boucle while, tous les caractères sont traités un par un à chaque itération de la boucle, le retour à la ligne compris.
Seulement voilà, je n'ai pas la moindre idée de comment résoudre ça
Si quelqu'un pouvait m'aider... merci d'avance![]()
Partager