【问题标题】:(Beginner Programmer) Need help: Linked Lists in C(初级程序员)需要帮助:C 中的链表
【发布时间】:2014-04-26 11:20:27
【问题描述】:

我正在尝试浏览一本书,看看一个字符出现在哪一行(总共 64 个字符),我必须使用链表。问题是我对链表很陌生,我对它们不是很自信。另外,我不是最擅长指点的人,而且我很容易跟他们打交道。

下面我添加了我当前的代码,它在第 59 行给出了错误:“错误:下标值既不是数组也不是指针也不是向量”。

我已经阅读了几个人对类似问题的回答,但没有一个有帮助。

如果有人能看出我哪里出错了(我敢肯定不止一个地方),如果你能帮助我,如果我没有正确使用链接列表,我将不胜感激,欢迎提出建设性的批评因为我真的迷失了整个链表的概念。在有人翻阅我的代码之前,我对编程还比较陌生,并且已经自学了几个月,所以我知道它远非完美。此外,如果有人对其当前状态有疑问,我会在它工作时修复它以使其看起来更好。提前谢谢:)!

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

 struct Characters{

    char names[65][50]; //This is the names array

};

struct Charline{
   char name;
   int line[60000];
   struct Charline * next;
};


char NameFun(){

    int i=0, choice;
    struct Characters c;

    FILE *fp = NULL; 
    fp = fopen("MisNames.txt", "r"); 

    for(i=0; i<65; i++){
        fgets(c.names[i], sizeof(c.names[i]), fp); //Gets each name and stores it as an element of an array
    }

    fclose(fp);
}

int LineScan(){

    struct Characters c;
    typedef struct Charline l;

    l *curr, *head;

    int i, j;
    int k=0;
    char string[300];

    FILE *fp = NULL; 
    fp = fopen("MisNames.txt", "r"); 

    head = NULL;

    for(j=0; j<=65; j++){

        curr = (l *)malloc(sizeof(l));
        curr->name[j] = c.names[j];
        curr->next  = head;
        head = curr;
        for(i=1; i<=68116; i++){

            printf("BUG");
            fgets(string, 250, fp);
            printf("BUG");

            if(strstr(string, c.names[j])!=0){
                curr = (l *)malloc(sizeof(l));
                curr->line[k] = i;
                curr->next  = head;
                head = curr;
                printf("Line: %d\n");
                printf("5BUG");
                k++;
            }

            else{
                continue;
            }


        }
    }



}


int main(){
    NameFun();
    LineScan();
    return 0;
}

【问题讨论】:

  • 我认为这个问题有点宽泛。据我所知,它可以改写为“我是编码新手。我遇到了一些编译错误。另外,我的代码不起作用。不过我是新手,请帮忙!”尝试分别解决您的每个问题。专注于一件事可以使它不那么不堪重负。从编译问题开始,您应该希望能够用更多的肘部油脂来解决它们。您可能不完全理解该术语,但它至少应该看起来“关闭”。例如,是什么让您认为c.names[j]dude 是同一类型?
  • @roliu 谢谢,这消除了警告。我只是在尝试一些小事让它工作并查看它我发现我在那部分出错了,我现在更新了上面的代码,不再显示警告。

标签: c pointers linked-list


【解决方案1】:

我建议你从here开始。我记得当我想了解链接列表时开始使用它,它对我有很大帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多