2 u012493612 u012493612 于 2013.10.20 21:59 提问

一个链表问题 是关于链表添加的 但是周围的人每人能看出来问题

#include "common.h"
#include "config.h"
CONFIG_INFO_S srccon={0,NULL,NULL} ;

int vipp_config_add(char *buf)

{
char *delim= "=\n";
CONFIG_NODE_S plist;
strcpy(plist.key ,strtok(buf,delim));
strcpy(plist.value,strtok(NULL,delim));
if(srccon.head==NULL)
{
srccon.head=srccon.tail=&plist;
printf("1 printf is %s,value is %s\n",srccon.head->key,srccon.head->value);
}
else
{
srccon.tail->next =&plist;
srccon.tail=&plist;
printf("2 printf is %s,value is %s\n",srccon.tail->key,srccon.tail->value);
}
srccon.tail->next=NULL;
srccon.confignum++;
memset(buf,0,1024);
return 0;
}

int vipp_config_travser()
{
FILE *fp;
char buf[1024]={0};
strcpy(buf,"en.conf");
if(buf == NULL)
{
// printf("no this file\n");
exit (-1);
}
fp = fopen(buf,"r");
if(fp == NULL)
{
perror("fopen");
exit (-1);
}
while(fgets(buf,1024,fp))
{
vipp_config_add(buf);
}
return 0;
}
void travel()
{
CONFIG_NODE_S *plist=srccon.head;
while(plist!=NULL)
{
printf("key = %s,value = %s\n",plist->key,plist->value);
plist= plist->next;
}
}
主函数是
int main(void )
{
char tem[32]={0};
struct _config_node pre;
strcpy(tem,"config.cof");
vipp_config_travser();
travel();

return 0;

}要便利的文本是这个样子的:welcomepro=Welcome
ipaddr=HostIPAddress
bcast=HostBcastAddress
nick=HostNickname
status=HostStatus
online=OnlineDevices
call=calls
message=messages
callwith=Callingwith
consolempt=vipp
nickname=OllyDbg
scaninter=2
autorecord=0
但是我怎么也找不到自己出错在哪里,打印的结果完全不对,望诸位大神不吝赐教

1个回答

u012493612
u012493612   2013.10.21 19:30
已采纳

#include "common.h"
#include "config.h"
CONFIG_INFO_S srccon={0,NULL,NULL} ;

int vipp_config_add(char *buf)

{
char delim= "=\n";
*
*****CONFIG_NODE_S plist; 问题在这里 由于这个是固定的地址 而且在不断地调用,其地址是一直不变的,所以每次虽然添加了,但是都会被下一次覆盖,所以,到了最后一直都是一个。
呵呵,以后切记,地址问题,内存分配特别重要

Csdn user default icon
上传中...
上传图片
插入图片