Les fonctions de la famille de scanf() sont très caprieuses, car elles tolèrent assez mal les chaines qui ne répondent pas au format attendu (le f à la fin de scanf, c'est pour "format" ;) ). Pour un code débutant, en connaissant ces limites, on peut se servir du fait que scanf() renvoie le nombre d'éléments convertis. Tu peux donc faire un code comme ceci :
Avec la valeur de n, tu peux adapter ton code.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 int main() { int a = 0; int b = 0; int c = 0; char buffer[1024]; fgets(buffer, 1024, stdin); int n = sscanf(buffer, "%d %d %d", &a, &b, &c); printf("Elements convertis %d\n", n); printf("%d %d %d", a, b, c); }
Par contre, clairement ce code n'accepte que des lignes comme "12 56 89", "12 56" ou "12". Cela correspond bien au format "%d %d %d" qui cherche 3 entiers.