c-fscanf返回值和链表



这是我的代码的一部分。

while(1)
{
struct client* newnode = malloc(sizeof(client));
if(head->next != NULL)
{
newnode = newnode -> next;
}
if(head->next == NULL)
{
newnode->next = head->next;
head->next=newnode;
}

ReadEOF = fscanf(fp1,"%d %s %s %s %sn",&(newnode->ID),newnode->PW,newnode->NAME,newnode->ADDRESS,newnode->PNUM);
if((ReadEOF)!= 5)
{
break;
}
++NumofClient;
printf("%d",NumofClient);
}   //make newnodes

这些代码是在循环之前编写的。

struct client* head=malloc(sizeof(client));
head->next = NULL;
int NumofClient = 0;
int ReadEOF;

这是结构客户端。

typedef struct client{
int ID;
char PW[100],NAME[100],ADDRESS[100],PNUM[100];
struct client* next;
}client;

这是client.txt文件。

123 aa aa aa aa aa
234 bb bb bb bb bb
567 cc cc cc cc cc

我期望NumofClient的值为3。

但我发现当NumofClient的值为1时,程序就会退出循环。

这意味着fscanf函数的返回值在第二次尝试时不是5。

或者,在链表实现过程中是否发生了任何错误?

如果你需要,我会很乐意写完整的代码在评论

您正在重写(内存泄漏(并将垃圾(未初始化的值(分配给中的新节点

if(head->next != NULL)
{
newnode = newnode -> next;
}

我想你想要

newnode->next = head;
head = newnode;

相关内容

  • 没有找到相关文章

最新更新