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 : 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);
}
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
char *chaine1="blabla";
Mais plutôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
char chaine1;
strcpy(chaine1,"blabla");
Est-ce l'étoile qui change tout ?

Merci beaucoup,
Cordialement