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

有没有办法用scanf读取括号内的整数?,c,int,scanf,C,Int,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 é

我想用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;
}
将是:

x is: 12
y is: 34
a is: 52
但实际产出是:

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

有两种方法可以做到这一点

首先是评论中提到的

方法1

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

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

sscanf(str, "(%d, %d, %d)", &x, &y, &a);
“2\n”
结尾处的
'\n'
前需要空格(“
-消耗
'\n'
的东西)

建议在
(“
”)“
”,“
之前的格式中自由使用
”,“
”,以使用可选的空格。
%d”
已经使用了前导空格

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

我真的不明白你的问题…
/prog在检查
scanf()的返回值之前不要使用
x,y,a
-->例如
if(scanf(%%*[(]%d,%d,%d%*[)],&x,&y,&a)!=3)put(“出现问题,请查看预期输入和代码”)
可疑发布的代码来自较大的代码,并且
'\n'
未被读取。将
''
放在
'%*[(]”
之前。请发布使用的精确输入。@chux,你是对的。现在我发布了精确的代码。正如chux所说,我没有发布整个代码。对于短代码,第一次提到的注释可以正常工作。
// scanf("(%d, %d, %d)", &x, &y, &a);
if (scanf(" (%d ,%d ,%d )", &x, &y, &a) != 3) puts("Oops");