有没有办法用scanf读取括号内的整数?
我想用scanf读取括号内的三个整数 我试过一些代码,比如:1)有没有办法用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 é
%*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");