假设输入为:
6 4
0 1 2 2 1 0
1 0 0 0 0 1
1 0 0 0 0 1
0 1 1 1 1 0
6和4分别是宽度和高度。 我用的是:
scanf("%d %d", &width, &height);
然后我使用for循环将其余输入放在2D数组(board [height] [width])中。 问题在于验证宽度和高度。
当我输入
6 4
0 1 2 2 1 0
1 0 0 0 0 1
1 0 0 0 0
0 1 1 1 1 0
错过了一个输入,但它等待直到再输入一个数字。如果输入的输入不足或太多,我如何管理并使其发生错误?
有人可以帮我解决这个问题吗?谢谢!
答案 0 :(得分:0)
您可以使用gets
,strtok
和atoi
来完成此操作。
以下是完整的工作代码。见here working:
#include <stdio.h>
#include <string.h>
int main(void) {
int w, h, i, j;
char buffer[100];
scanf("%d %d", &w, &h);
int num[w][h];
gets(buffer);
for(i=0; i<h; i++)
{
gets(buffer);
char *token = strtok(buffer, " ");
for(j =w; j && token; j--)
{
num[i][w-j] = atoi(token);
token = strtok(NULL, " ");
}
if(j)
{
//Do what you wish to do on error
printf("\nError!!! %d inputs are missing\n", j);
}
}
for(int i=0; i<h; i++)
{
for(int j =0; j<w; j++)
printf("%d ", num[i][j]);
printf("\n");
}
return 0;
}