[英]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.