c-两个连续的fgets seg故障



我目前正在尝试读取将输入到stdio的两个字符串s和t。它们将在单独的行中输入。

以下代码分段故障。

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
    char t[5000000];
    char s[5000000];
    fgets(t,50000,stdin);
    fgets(s,50000,stdin);
    printf("%c",t[1]);

}

然而,一个fgets并没有。

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
    char t[5000000];
    char s[5000000];
    fgets(t,50000,stdin);
    printf("%c",t[1]);
}

其他帖子谈到了一些退货和"/n"问题,但我不明白到底是什么问题。

数组太大,无法在堆栈上声明,它会填满并发生堆栈溢出,要么用malloc在堆上声明它们,要么缩小它们。

声明它们static也将使其工作,因为静态变量存储在内存中的不同位置,而不是堆栈上。

FYI:

堆栈大小因平台而异,在linux平台上,堆栈大小默认为8MB。您可以使用系统调用getrlimit()和setrlimit(。

相关内容

  • 没有找到相关文章

最新更新