gpt4 book ai didi

从 .txt 文件创建字符串列表

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

我正在尝试创建一个从 .txt 文件中读取单词的字符串列表。我的代码只有在 .txt 文件包含少量单词时才有效,我不明白为什么,我认为这是我的代码的内存分配问题。

#include <stdio.h>
#include <stdlib.h> struct s_nodo {
char* word;
struct s_nodo*sig; }; typedef struct s_nodo* t_nodo;

void add (t_nodo*,char*); void print(t_nodo);

int main() {
char aux[30];
t_nodo lista=NULL;
FILE*fd;
fd=fopen("c:\\texto.txt","r");
while(!feof(fd))
{
fscanf(fd,"%s",aux);
add(&lista,aux);

}
print(lista);
return 0; }



void add (t_nodo*lista,char *aux) {

if(*lista==NULL)
{
*lista=malloc(sizeof(t_nodo));
(*lista)->word=malloc((strlen(aux+1))*sizeof(char));
strcpy((*lista)->word,aux);
(*lista)->sig=NULL;

}
else add (&(*lista)->sig,aux);

}

void print (t_nodo lista) {
if(lista!=NULL)
{
printf("-%s-",lista->word);
print(lista->sig);
}

}

最佳答案

您正在为指向结构的指针的大小分配内存,而您需要为结构本身的大小分配内存。

改变

  *lista=malloc(sizeof(t_nodo));

  *lista=malloc(sizeof(struct s_nodo));

此外,您使用了错误的表达式来为 word 分配内存。

(*lista)->word=malloc((strlen(aux+1))*sizeof(char));

应该是

(*lista)->word=malloc( (strlen(aux) + 1 );  //sizeof(char) == 1 in C

也就是说,请参阅 Why is “while ( !feof (file) )” always wrong?

关于从 .txt 文件创建字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35207269/

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