我是C语言的新手,但无论如何我都无法弄清楚我的错误在哪里。第一个scanf工作正常,变量在读入时被打印出来。第二个scanf似乎没有正确读取输入。输入格式为"char int int",例如b 4 4
当我将opb、x和y打印出来时,opb=" ",x=13238272,y=0。有什么想法吗?......请注意,在问题下面我删去了一些代码
int main(void)
{
/*initialize variables*/
int width, height;
char op;
/*grid input*/
scanf("%c %d %d", &op, &width, &height);
/*check conditions*/
if (op != 'g' || width>100 || height>100 || width*height<10 || width<1 || height<1) {
printf("grid-error\n");
return 0;
}
/*initialize grid elements*/
int grid[width][height];
char printGrid[width][height];
/*create grid elements*/
int i, j;
for (i=0; i<height; i++) {
for (j=0; j<width; j++) {
grid[j][i] = 0;
printGrid[j][i] = '*';
}
}
/*print successful creation*/
printf("%c %d %d \n", op, width, height);
int k;
for (k = 0; k<10; k++) {
/*initialize variables*/
int x, y;
char opb;
/*mine input*/
scanf("%c %d %d", &opb, &x, &y);
/*check conditions*/
if (opb != 'b' || x<0 || y<0 || x>(width-1) || y>(height-1) || grid[x][y] == 9) {
printf("mine-error\n");
return 0;
}
scanf()
的返回值,因为这是唯一的方法,你才能知道是否存在格式错误。 - geekosaur%c
会读取下一个可用字符,即使它是空格或者是从上一行读取后剩余的换行符。一般来说,更安全的做法是将输入读取为行,并使用sscanf()
进行解析。 - geekosaur