我的文件具有以下模式。
word1 word2 word3
wordzz word33 word2431 word341
等等。
现在我在一个结构数组中读取整个文件,数组的每个条目都维护每一行文件的链表。
现在整个代码有点难以解释,但问题就在这里。
当我尝试执行以下操作时,在特定的地方
printf("\n%s",ptr1->name);
puts(ptr1->name);
ptr1
指向任何链表头部的 ptr 在哪里。(比如第 1 行)
名称字段是名称,即word1,word2 etc.
现在输出是
word1word1
word2word2
word3
怎么word3
没有被打印两次?这整个问题甚至使我无法strcmp
说出清单的最后一个字。
请帮忙。
附言
当我这样做的时候
printf("%d",ptr1);
它打印三个不同的值ptr
,它们都不是NULL
。
我有两个相同结构的相似数组。我使用相同的函数来填充这两个数组。现在
node* ptr,*ptr1;
ptr=first[i].ptr;
ptr1=second[i].ptr;
while(ptr!=NULL)
{
printf(" \n1");
printf(" %s", ptr->name); // Works Fine
if(!strcmp(ptr->name,"string"))
{
while(ptr1!=NULL)
{
printf("A %s ",ptr1->name);// Problem
fflush(stdout); // EDITS AS ASKED BY USER `pmg`
puts(ptr1->name);
if(!strcmp(ptr1->name,strt))
{
printf("\n 4\n");
return 1;
}
else
{
ptr1=ptr1->next;
}
}
return 0;
}
else
{
ptr=ptr->next;
}
}
为什么我在提到的地方遇到问题,而不是在“工作正常”的地方。
在工作正常时,我显示了所有节点(名称),但在问题点我没有显示姓氏。
但是,如果我确实提出了问题,它也会显示该名称。
如果在这段代码之前我只使用 printf 打印第二个数组。它确实打印每个节点(名称)。谁能告诉我为什么以后不打印。?