Bonjour,
Je fais un programme qui doit lire des lignes de commandes se présentant sous la forme "child 3 4" et afficher un message si le format n'est pas respecté.
J'ai donc fait le programme basique suivant:
Sauf que quand je tape pile 5 caractères, puis un espace, un entier, un espace, un entier, j'obtient une 'Bus Error: Core Dumped'.
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 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i, nb_iter, nb_sleep; char command[6],c; while(scanf("%5s %d %d",command,nb_iter,nb_sleep)!=3 || !strcmp(command, "child")) { while ( ((c = getchar()) != '\n') && c != EOF); printf("Le format est child nb_iter nb_sleep\n"); } printf("%s %d %d\n",command,nb_iter,nb_sleep); }
Par contre quand je tape plus de 5 caractères, ça prends les 5 premiers et tout marche bien.
J'imagine que les espaces dans le format ne sont pas pour rien la dedans, mais je ne saurais pas dire ce qui ne va pas.
Sinon a propos de cette article de la faq: http://c.developpez.com/faq/c/?page=...STRINGS_strcmp
Il me semblait qu'il ne fallait pas faire
Mais plutôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char *chaine1="blabla";
Est-ce l'étoile qui change tout ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char chaine1; strcpy(chaine1,"blabla");
Merci beaucoup,
Cordialement
Partager