gpt4 book ai didi

c - 为什么我不能在 C 中声明一个多于三位数的 char 数组?

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:04 24 4
gpt4 key购买 nike

我正在编写一个程序,它接受一个整数,然后生成 char 数组的数组,并查找所有行中每个 char 的每次出现次数。此二维数组的大小为“lineNumber”。代码如下所示。问题是当我输入超过 3 位数字时,它会停止工作并退出。我真的发现问题在于声明字符数组的数组。你能告诉我如何克服这个问题吗?例如我想输入 1000 行?问题不在于 scanf 函数,我知道。你能修复我的代码吗?

printf("Number of lines: ");
int lineNumber;
int n = scanf("%d", &lineNumber);
if (n == 0) {
puts("Use integers.");
return n;
}
char lines[lineNumber][1024]; /* It can't declare more than 3 digit integer */
int i = 0;
for (;i < lineNumber; i++) {
printf("%d: ", i+1);
fgets(lines[i], 1024, stdin);
lines[i][strlen(lines[i])-1] = '\0';
}

/* count the number of occurrence of every char in all lines */

最佳答案

例如,如果 lineNumber 是 9000:

char lineptr[lineNumber][1024];

然后 lineptr 使用大约 9000*1024 = 9MB 的堆栈空间。根据您的操作系统和系统配置,这可能会使您的程序崩溃太多。堆栈空间通常是有限的。

如果您需要大量空间,最好使用malloc() 分配内存。

关于c - 为什么我不能在 C 中声明一个多于三位数的 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55637667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com