我试图通过以下方式制作自定义数组大小:
#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,
答案 0 :(得分:1)
在每次输入后按 Enter 键,输入缓冲区中的newline
混乱。每次进入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
}
}
答案 1 :(得分:0)
scanf("%d %d",&x,&y);
int kancelar[x][y];
您无法创建具有变量值的数组,只能使用常量值来执行此操作。因此,要创建自定义数组,您需要动态地为您的数组分配内存
我已从此链接中获取此代码:LINK
#include <stdio.h>
#include <stdlib.h>
int main()
{
int r, c;
scanf("%d %d",&r,&c);
// allocating memory
int *arr = (int *)malloc(r * c * sizeof(int));
int i, j, count = 0;
// giving them default values
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
*(arr + i*c + j) = ++count;
// printing the values
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("%d ", *(arr + i*c + j));
// free memory
free(arr);
return 0;
}
查看链接,因为它们显示了多种方式来实现此目标