Получение нескольких значений с помощью scanf () - PullRequest
28 голосов
/ 11 сентября 2009

Я использую scanf () для получения набора целых чисел от пользователя. Но я бы хотел, чтобы пользователь указывал все 4 дюйма одновременно, а не 4 разных подсказки. Я знаю, что могу получить одно значение, выполнив:

scanf( "%i", &minx);

Но я бы хотел, чтобы пользователь мог сделать что-то вроде:

Enter Four Ints: 123 234 345 456

Возможно ли это сделать?

Ответы [ 5 ]

44 голосов
/ 11 сентября 2009

Вы можете сделать это с помощью одного вызова, например:

scanf( "%i %i %i %i", &minx, &maxx, &miny, &maxy);
9 голосов
/ 11 сентября 2009

Да.

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

Цикл просто для демонстрации того, что scanf возвращает количество успешно прочитанных полей (или EOF).

1 голос
/ 11 сентября 2009
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");
}
0 голосов
/ 14 октября 2014

Сдается для получения нескольких значений с scanf()

int r,m,v,i,e,k;

scanf("%d%d%d%d%d%d",&r,&m,&v,&i,&e,&k);
0 голосов
/ 11 сентября 2009

Может сделать это, но тогда пользователь должен разделить числа пробелом:

#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);
}
...