gpt4 book ai didi

c - 我该如何处理这个段错误

转载 作者:行者123 更新时间:2023-11-30 19:24:53 25 4
gpt4 key购买 nike

我不断收到相同的消息“段错误:11”
gdb 告诉我断点就在 main 函数之后。在我声明 int j 的行中;我真的不明白这怎么可能破坏代码。

该函数读取的输入仅由 1 个字符串后跟 2 个数字组成,例如

约翰 22 43 萨姆 11 23

它应该做的只是将整个输入存储在“elenco”中,然后打印字符串。

首先我创建了一个与输入匹配的结构。然后我创建了一个函数,目的是读取输入并将其存储在变量中。然后我创建了一个函数,其变量是读取输入(因此输入)并打印给定字符串的函数的输出

有人可以帮我找出问题并解决它吗?

#include  <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct
{
char name[20];
int distance;
int point;
} throw;

throw *read_file(FILE *f, int *j)
{
int i = 0;
int c;
int Dim = 32;
char buf[1000];
throw *list;

list = malloc(Dim *sizeof(*list));
if (list == NULL)
{
(*j) = 0;
return NULL;
}
while (fgets(buf, sizeof(buf), f)!= NULL)
{
sscanf(buf, "%19s %d %d",
list[*j].name,
&list[*j].distance,
&list[*j].point);
*j += 1;

if ( *j >= Dim)
{
Dim = Dim*2;
list = realloc(list, Dim *sizeof(*list));
if (list == NULL)
{
return NULL;
}
}
}
return list;
}

void print_everything(throw *list, int j)
{
int c;
for (c=0; c < j; c++ )
{
printf("%d\n",list[c].distance);
}
}

int main(int argc,const char *argcv[])
{
int j = 0;
FILE *file;
throw *list;
if (!( argc != 3))
{
printf("file's dimension is wrong\n");
return -1;
}

file = fopen(argcv[1], "r");

list = read_file(file, &j);

print_everything(list, j);
fclose(file);

return 0;
}

输入1.txt

马里奥 20 30
乔治 30 40
马里奥 40 40
达维德 32 20
马里奥 9 32

这正是文件所包含的内容

最佳答案

你的程序没问题。您的问题在 input1.txt 中,您需要

Mario 20 30
Giorgio 30 40
Mario 40 40
Davide 32 20
Mario 9 32

使用 fgets() 读取时,每一行都需要一个\n

关于c - 我该如何处理这个段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59635228/

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