使用scanf()获取多个值

Jos*_*ren 28 c scanf

我正在使用scanf()从用户那里获取一组int.但我希望用户一次提供所有4个整数而不是4个不同的提示.我知道我可以通过以下方式获得一个价值:

scanf( "%i", &minx);
Run Code Online (Sandbox Code Playgroud)

但我希望用户能够做到这样的事情:

Enter Four Ints: 123 234 345 456
Run Code Online (Sandbox Code Playgroud)

是否有可能做到这一点?

Ree*_*sey 45

您可以通过一次调用完成此操作,如下所示:

scanf( "%i %i %i %i", &minx, &maxx, &miny, &maxy);
Run Code Online (Sandbox Code Playgroud)

  • @Jonathan Leffer - 根据我的scanf联机帮助页,"%i"如果以"0x"开头则读取基数为16的int,如果以"0"开头则读取基数为8,否则为10."%d"始终在基数10中读取.Open Group手册页与我的一致. (7认同)
  • ps很好的选择变量名:) (5认同)

Jon*_*ehl 9

是.

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

循环只是为了证明scanf返回成功读取的字段数(或EOF).


nos*_*nos 7

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");
}
Run Code Online (Sandbox Code Playgroud)


小智 5

只是补充一下,我们也可以使用数组:

int i, array[4];
printf("Enter Four Ints: ");
for(i=0; i<4; i++) {
    scanf("%d", &array[i]);
}
Run Code Online (Sandbox Code Playgroud)