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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager