只是看這條線headPtr=createNode();
我可以告訴大家,createNode()
功能失常 因爲你只需創建一個節點,但沒有分配足夠多的空間,它持有的字符串,多數民衆贊成在該段錯誤的來源。這裏是你的檢查功能的另一個版本,你似乎有點凌亂:
nodeT* checkNode (nodeT* node , char* token)
{
if(node)
{
if(!strcmp(token , node->token))
{
printf("token match\n");
return node;
}
checkNode(node->next , token);
}
}
編輯 您creatNode
功能的確是非常錯誤的,因爲我今天心情好我,這裏的修正版本;):
nodeT* createNode(nodeT* node , char* token , char* fileName , char* instance)
{
if(node)
node = creatNode(node->next);
else
{
node = malloc(sizeof(nodeT));
node->token = strdup(token);
node->fileName = strdup(fileName);
node->instance = strdup(instance);
node->next = NULL;
}
return node;
}
你從哪裏調用'checkNode()'? –
你可以嘗試一個調試,比如'gdb'嗎? –
什麼是'nodeT'? –