扫描二维数组大小C
我已尝试通过以下方式设置自定义数组大小:扫描二维数组大小C,c,C,我已尝试通过以下方式设置自定义数组大小: #include <stdio.h> #include <stdlib.h> int main() { int x; int y; printf("Array size:"); scanf("%d %d", &x, &y); int kancelar[x][y]; int i; int q; for (q = 0; q < x; q++)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x;
int y;
printf("Array size:");
scanf("%d %d", &x, &y);
int kancelar[x][y];
int i;
int q;
for (q = 0; q < x; q++)
for (i = 0; i < y; i++)
kancelar[q][i] = getchar();
for (q = 0; q < x; q++)
for (i = 0; i < y; i++)
putchar(kancelar[q][i]);
return 0;
}
但没有运气,价值观是错误的。我用的是C
scanf("%d %d",&x,&y);
int kancelar[x][y];
不能使用变量值创建数组,只能使用常量值。因此,要创建自定义数组,需要动态地为数组分配内存
我已从该链接获取此代码:
查看链接,因为它们显示了实现此目的的多种方法每次输入后按Enter键,输入缓冲区中出现的换行符会把您弄得一团糟。每次在使用getchar之前,都需要使用换行符 一个简单的解决方案可能看起来像
printf("Array size:");
scanf("%d %d%*c",&x,&y); //eat up the newline
int kancelar[x][y];
int i;
int q;
for(q = 0;q < x;q++)
{
for(i = 0;i < y;i++ )
{
kancelar[q][i] = getchar();
getchar(); //eat up newline
}
}
怎么了?请澄清你所说的“值是错误的”是什么意思?您得到了什么值以及您希望得到什么值?@DanielKubica您可以编辑您的问题而不是scanf%d%d,&x,&y;->扫描%d%d%*c,&x,&y,显示您的输入。@DanielKubica显示您的输入。并解释值是错误的。是的,您可以,它被称为VLA,即,如果您有C99编译器或更高版本1,则从malloc中删除强制转换,因为它是不必要的2 DECLARE r和c 3释放分配的memory@AndersK. 我不知道。@CoolGuy谢谢!大约1个malloc返回void指针,我们不需要先强制转换它吗@sami1592 void*将自动转换。阅读感谢,但现在它给了我5行输入时,需要3x4阵列,输出仍然是错误的
printf("Array size:");
scanf("%d %d%*c",&x,&y); //eat up the newline
int kancelar[x][y];
int i;
int q;
for(q = 0;q < x;q++)
{
for(i = 0;i < y;i++ )
{
kancelar[q][i] = getchar();
getchar(); //eat up newline
}
}