有没有办法用scanf读取括号内的整数?

Is there a way to read integers inside brackets with scanf?

我想用 scanf 读取括号内的三个整数。

我尝试了一些代码,例如:1)%*c、2)scanf("(%d, %d, %d)", &x, &y, &a); ...

#include <stdio.h>

int main()
{
  int m, n, s, x, y, a;

  scanf("%d %d",&m, &n );
  scanf("%d", &s );
  scanf("(%d, %d, %d)", &x, &y, &a);
  printf("x é: %d\n y é: %d\n a é: %d\n", x, y, a);
  return 0;
}

我期望输出:

12 23
2
(12, 34, 52)

成为:

x is: 12
y is: 34
a is: 52

但实际输出是:

x is: 1942163568
y is: 21945
a is: 1800188064

有两种方法。

首先如评论中所述。

方法一

scanf("(%d, %d, %d)", &x, &y, &a);

方法二

char str[100] = {'[=11=]'};
fgets(str, 99, stdin);

sscanf(str, "(%d, %d, %d)", &x, &y, &a);

"(" 之前需要 space - 消耗 "2\n" 末尾的 '\n' 的东西。

建议在'('')'','之前的格式中自由使用" "来消耗可选的白色-space。 "%d" 已经消耗领先的白色-space.

// scanf("(%d, %d, %d)", &x, &y, &a);
if (scanf(" (%d ,%d ,%d )", &x, &y, &a) != 3) puts("Oops");