web-dev-qa-db-fra.com

Obtenir plusieurs valeurs avec scanf ()

J'utilise scanf () pour obtenir un ensemble d'ints de l'utilisateur. Mais je voudrais que l'utilisateur fournisse tous les 4 ints à la fois au lieu de 4 promps différents. Je sais que je peux obtenir une valeur en faisant:

scanf( "%i", &minx);

Mais j'aimerais que l'utilisateur puisse faire quelque chose comme:

Enter Four Ints: 123 234 345 456

Est-il possible de faire cela?

27
Josh Curren

Vous pouvez le faire en un seul appel, comme suit:

scanf( "%i %i %i %i", &minx, &maxx, &miny, &maxy);
41
Reed Copsey

Oui.

int minx, miny, maxx,maxy;
do {
   printf("enter four integers: ");
} while (scanf("%d %d %d %d", &minx, &miny, &maxx, &maxy)!=4);

La boucle sert uniquement à démontrer que scanf renvoie le nombre de champs lus (ou EOF).

9
Jonathan Graehl
int a,b,c,d;
if(scanf("%d %d %d %d",&a,&b,&c,&d) == 4) {
   //read the 4 integers
} else {
   puts("Error. Please supply 4 integers");
}
1
nos

Pourrait le faire, mais l'utilisateur devra séparer les nombres par un espace:

#include "stdio.h"

int main()
{
    int minx, x, y, z;

    printf("Enter four ints: ");
    scanf( "%i %i %i %i", &minx, &x, &y, &z);

    printf("You wrote: %i %i %i %i", minx, x, y, z);
}
0
l3dx