この行headPtr=createNode();
を見るだけで、ノードを作成しただけで、文字列を保持するのに十分なスペースを割り当てていないため、createNode()
関数が間違っていることがわかります。これがセグメンテーション違反の原因です。別のバージョンのチェックがありますfunction 、あなたのものは少し厄介なようです:
nodeT* checkNode (nodeT* node , char* token)
{
if(node)
{
if(!strcmp(token , node->token))
{
printf("token match\n");
return node;
}
checkNode(node->next , token);
}
}
EDIT
あなたの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;
}