使用C

时间:2018-03-22 05:06:46

标签: c multidimensional-array scanf

假设输入为:

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

错过了一个输入,但它等待直到再输入一个数字。如果输入的输入不足或太多,我如何管理并使其发生错误?

有人可以帮我解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用getsstrtokatoi来完成此操作。

以下是完整的工作代码。见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;
}