【发布时间】:2020-04-23 09:51:40
【问题描述】:
解决办法是什么? 你知道帮助我创建一个大数组的方法吗? 我使用 (int) 语句创建一个 100 * 100 数组没有问题,而这个 1000 * 1000 数组的命令会导致错误代码。
#include<stdio.h>
#include<string.h>
#define true 1
int main()
{
int i, j;
int a[1000][1000];
int b[1000][1000];
int x = 0;
i = 0;
while (true)
{
scanf_s("%d", &b[i]);
scanf_s("%c", &ch);
if (ch !='-')
{
x = (i+1);
break;
}
i++;
}
printf("%d\n\n", x);
for (i = 0; i < x; i++)
{
for (j = 0; j < strlen(b[i]); j++)
{
printf("%d\n\n", b[i][j]);
}
}
return 0;
}
【问题讨论】:
-
"导致错误代码" 什么错误?您需要展示问题以获得帮助。你用的是什么编译器?这是什么平台?这些数组每个都有 1000000 个元素,因此它们的大小将达到兆字节的数量级。如果这是针对微控制器的,那就不合适了。
-
你分配你的
int a[1000][1000]在堆栈上。您可以快速耗尽堆栈空间。最好在全局范围内分配它或使用malloc。 -
scanf_s要求为 c、C、s、S 或 [ 类型的所有输入参数指定缓冲区大小。缓冲区大小作为紧跟在指向缓冲区或变量的指针之后的附加参数 传递。你不要那样做。可能,如果您打开编译器的 warnings,它会警告您。 -
并且
ch没有被声明。 -
亲爱的 Paul Ogilvie,当我使用 malloc 创建二维数组时,我收到了来自 Visual Studio 的 stackoverflow 消息。我该怎么办 ? @PaulOgilvie
标签: c arrays string visual-studio int