[Débutant] Bus Error et scanf
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:
Code:
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);
} |
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'.
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
Code:
1 2
|
char *chaine1="blabla"; |
Mais plutôt
Code:
1 2 3
|
char chaine1;
strcpy(chaine1,"blabla"); |
Est-ce l'étoile qui change tout ?
Merci beaucoup,
Cordialement