我打开输入文件。 我读了它,把它存放在一个二维数组中,分成标记。
第一步为#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
。请帮助我
答案 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使用手动创建的数据,然后将其添加到循环中并进行调试,直到您使用该文件