将 .txt 文件中的唯一词复制到链表

标签 c file

我正在尝试将独特的单词从 .txt 文件复制到链接列表。我需要复制每个唯一的单词一次,不要重复。我写了一个程序,但是我的函数有问题,该函数检查单词是否已经存在于列表中。下面是从文件中读取单词并将单词添加到链接列表(如果尚未添加)的代码片段。

FILE*fd;
fd=fopen("c:\\texto.txt","r");
while(!feof(fd))
{
    fscanf(fd,"%s",aux);
    if(check(&lista,aux)==1){
    add(&lista,aux);}
}

我对check函数的想法是:检查我从文件中得到的实际单词是否与链表中当前节点中已有的单词相同。如果当前节点不存在,则转到下一个节点。如果函数发现这个词已经在链表中,则返回0。如果函数到达链表的末尾,则返回1,以便main可以将这个词添加到链表中。

   int check (t_nodo*lista, char*aux)
{

    if((*lista)!=NULL&&strcmp(((*lista)->word,aux))!=0)
    {
        check(&(*lista)->next,aux);
    }

    if((((*lista)->word,aux))==0)
    {
        return 0;
    }

    if((*lista)==NULL)
    {
        return 1;
    }

}//el tano se la come a mordiscones

实际上,程序只是将第一个单词复制到列表中。然后它将所有其他节点的词设置为与第一个词相同。我已经检查了“添加”功能,没问题。

最佳答案

您在列表中更深入但未返回值。修复:

if((*lista)==NULL)
{
    return 1;
}

if(strcmp(((*lista)->word,aux))!=0)
{
    return check(&(*lista)->next,aux);
}

return 0;

还可以考虑使用 while 循环而不是递归。

关于将 .txt 文件中的唯一词复制到链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209142/

相关文章:

windows - FindFirstFile/FindNextFile 查找已用 SHFileOperation 删除的文件夹

python filecmp.dircmp 忽略通配符

c - C/C++ 中文件读取的重命名文件的扩展问题

c++ - OpenCV 的 cvWaitKey() 函数有什么作用?

c - 将原始结构内容(字节)写入 C 中的文件。对写入的实际大小感到困惑

c - 二维数组上的 memcpy

c - shell 中的输出重定向如何适用于 Linux 中 C 中的 fork() 生成的子进程?

javascript - getcwd() 和文件字符串导致文件协议(protocol)错误

git - Github 或任何其他基于云的存储库服务(Gitlab、Bitbucket)如何存储源代码文件和目录?

c# - 在 C# 中的字符串前添加 @ 符号