繁体   English   中英

我在使用用户输入初始化 C 中的二维数组时遇到问题

[英]i have a problem with initializing a 2D array in C using user input

我有这个代码:

#include <stdio.h>
void set_board_size() {
    int Xsize, Ysize, check = 1;
    while (check == 1) {
        printf("enter X and Y sizes(in that order): ");
        scanf_s("%d", &Xsize);
        scanf_s("%d", &Ysize);
        if ((Ysize >= 4 && Ysize <= 9) || (Xsize >= 4 && Xsize <= 9)) {
            break;
        }
        else
            printf("---------");
    }
    int mat[Xsize][Ysize];
}
void main() {
    set_board_size();
}

在线的

int mat[Xsize][Ysize];

它说我必须使用一个常量值,但是我如何通过用户输入来做到这一点?

你可以使用这个:

int** mat = (int**)malloc(Xsize * sizeof(int*));
for (size_t i = 0; i < Xsize; i++)
{
    mat[i] = (int*)malloc(Ysize * sizeof(int));
}

并且不要忘记在使用完毕后释放所有内容:

for (size_t i = 0; i < Xsize; i++)
{
    free(mat[i]);
}
free(mat);

您可能需要更改此设置:

int Xsize, Ysize;

对此:

size_t Xsize, Ysize;

和这个:

scanf_s("%d", &Xsize);
scanf_s("%d", &Ysize);

对此:

scanf_s("%zu", &Xsize);
scanf_s("%zu", &Ysize);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM