【发布时间】: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