我打开输入文件。我读了它,将其存储在2D数组中,分成多个令牌。
首先将strtok表示为“ \ n”,然后将其存储,然后将strtok表示为“:”,然后忽略它,然后将strtok表示为“,”并将其存储。
我想为每一行搜索一个单词(我将其存储在步骤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
。请帮助我
要主要回答您的意见,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
使用调试器确认数组已正确填充,然后逐步执行代码-让我们知道如何进行。
您确实有太多错误无法列出所有错误...:您的l最终将跨越数组边界,您一次要处理一行,但是在数组索引中硬编码0和1,您可能需要在开始处理之前了解所有行的内容。
我将从首先使InsertVertex处理手动创建的数据开始,然后将其添加到循环中并进行调试,直到使它与文件一起使用
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句