gpt4 book ai didi

c - 使用 struct 从文本文件读取时出错

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:31 25 4
gpt4 key购买 nike

我是C编程的初学者,尝试使用struct来存储相关变量,然后在主程序中使用它们。但是,当我在不使用 struct 的情况下运行相同的程序时,它运行良好。

代码如下所示,没有显示任何编译错误,但除了段错误外没有任何输出。

#include<stdio.h>

struct test
{
char string1[10000];
char string2[10000];
char string3[10000];
char string4[10000];
}parts;

int main()
{
FILE *int_file;
struct test parts[100000];

int_file=fopen("intact_test.txt", "r");

if(int_file == NULL)
{
perror("Error while opening the file.\n");
}
else
{
while(fscanf(int_file,"%[^\t]\t%[^\t]\t%[^\t]\t%[^\n]",parts->string1,parts->string2,parts->string3,parts->string4) == 4)
{
printf ("%s\n",parts->string3);
}
}

fclose(int_file);

return 0;
}

输入文件“intact_test.txt”包含以下行:AAAA\tBBBB\tCCCC\tDDDD\n

最佳答案

struct test的每个实例都是40k所以

struct test parts[100000];

正在尝试在堆栈上分配 4GB。这将失败,导致您的段错误。

您应该尝试减小每个 struct test 实例的大小,为 parts 提供更少的元素并将其移出堆栈。您可以通过为其提供静态存储持续时间来最轻松地完成最后一点

static struct test parts[SMALLER_VALUE];

关于c - 使用 struct 从文本文件读取时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488834/

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