我的测试输入是
[1,2,3]
[4,5,6]
[7,8,9]
[9,9]
或者它可以是单个 2d 坐标之前的任意数量的 3d 坐标,我的代码是
#include
#include
#include
#include
#include
int chính(){
int x1;
int y1;
int z1;
int x2;
int y2;
while(scanf("[%d,%d,%d]\n", &x1,&y1,&z1) == 3){
printf("(x,y,z) ---> (%d,%d,%d)\n", x1,y1,z1);
}
scanf("[%d,%d]", &x2, &y2);
printf("(%d,%d)\n", x2, y2);
return 0;
}
如果我将 while 循环更改为三个单独的 scanfs 那么它工作正常,但问题是我不知道我需要多少个。无论如何要解决这个问题以便扫描 2d 坐标?
Bất kỳ trợ giúp nào đều được đánh giá cao
考虑使用 fget
来捕获输入。 sscanf
是一种解析输入的方法。
一个优点是输入可以被多次解析并且输入流被清除到尾随换行符。
#include
#include
#include
int main ( void){
char line[256] = "";
int x1;
int y1;
int z1;
int x2;
int y2;
while( fgets ( line, sizeof line, stdin)) {
if ( 3 == sscanf ( line, "[%d,%d,%d]", &x1, &y1, &z1)) {
printf ( "(x,y,z) ---> (%d,%d,%d)\n", x1,y1,z1);
}
else if ( 2 == sscanf ( line, "[%d,%d]", &x2, &y2)) {
printf ( "(x,y) ---> (%d,%d)\n", x2, y2);
break;//exit the while loop
}
khác {
printf ( "input coordinates [x,y,z] or [x,y]\n");
printf ( "try again\n");
}
}
Tôi là một lập trình viên xuất sắc, rất giỏi!