邻接列表,拆分数组并在c中搜索此数组中的单词

时间:2014-12-25 15:48:23

标签: c arrays linked-list strtok doubly-linked-list

我打开输入文件。 我读了它,把它存放在一个二维数组中,分成标记。

第一步为#34; \ n"并存储它 其次是":"忽略它 然后strtok for","并存储它。

我想为每一行搜索一个单词(我将它存储在第5步)

为了搜索我使用strstr但我不能这样做。 我在下面添加输入文件和代码:

int main (){
 FILE *fp;
 fp = fopen ("C:\\input.txt", "r");
 char *name[10][10];
 char row[100];
 char *token, *tkn, *tk;
 int h = 0, f = 0, l = 0;
 for (h = 0; h < 9; h++){
  for (f = 0; f < 9; f++)
    name[h][f] = NULL;
}
 while (fgets (row, sizeof (row), fp)){
  token = strtok (row, "\n");
  name[l][0] = strdup (token);
  //printf("%s",name[l][0]);
  tkn = strtok (token, ":");
  tk = strtok (tkn, ",");
  m[l][1] = strdup (tk);
  if (strstr (name[l][1], name[l + 1][0]) == 0
      || strstr (name[l][1], name[l + 2][0]) == 0
      || strstr (name[l][1], name[l + 3][0]) == 0)
    {

    }
     l++;
    }
   fclose (fp);}

我希望使用此功能插入链接列表。

我的输入文件:

George    :Math1,History2,Math2
ELizabeth :Math2,Germany1,spanish1
Adam      :Germany1,History2,Math1

我想创建一个带有讲座名称的图表,我想使用附属列表。对于附属清单,我需要连接两个讲座,但我坚持这一步。如何搜索整行然后存储数组。例如,我搜索Math1。它是2行。然后我想为Math1 ->History2->Math2->Germany1创建一个调整列表Math1。请帮助我

1 个答案:

答案 0 :(得分:0)

主要回答你的意见,如果这样写的话,你的if陈述会更清楚

 if (!strstr (name[l][1], name[l + 1][0]) 
  || !strstr(name[l][1], name[l + 2][0]) 
  || !strstr(name[l][1], name[l + 3][0]))
{}
else
{
  InsertVertex{nodeHeader, studentName, courseName);
}

您必须定义并初始化nodeHeader,studentName和courseName

使用调试器确认您的阵列已正确填充,然后逐步完成代码 - 并告诉我们您的工作方式。

你真的有很多错误要列出它们......:你最终会越过你的数组边界,你一次只处理一行,但你的数组索引中硬编码为0和1,在开始处理之前,您可能需要知道所有行的内容。

首先让InsertVertex使用手动创建的数据,然后将其添加到循环中并进行调试,直到您使用该文件