2011-12-04 77 views
0
LIST *list; 
list = createList(); 
FILE *file = fopen("test.txt","r"); 
char line[50]; 
char* token; 

while(fgets(line,sizeof(line),file)) 
{ 
    token = strtok(line," ,:="); 
    while (token != NULL) 
    { 
     printf("\n%s",token); 
     token = strtok(NULL," ,:="); 
    } 
} 

這段代碼將我的文件中的行正確地分隔爲標記。 現在,我想將它們插入鏈表中。但在while循環中添加addNode函數:將從文件讀取的字符串插入鏈接列表

while (tp != NULL) 
{ 
    printf ("\n%s",token); 
    token = strtok (NULL, " ,:="); 
    addNode(li,&token); 
} 

插入時不起作用。

的ADDNODE功能是:(從給定庫)

int addNode (LIST* pList, void* dataInPtr) 
{ 
    bool found; 
    bool success; 
    NODE* pPre; 
    NODE* pLoc; 

    found = _search (pList, &pPre, &pLoc, dataInPtr); 
    if (found) 
     return (+1); 

    success = _insert (pList, pPre, dataInPtr); 
    if (!success) 
     return (-1); 
    return (0); 
} 

任何人有這個想法?

回答

1

這可能是這個問題:

addNode(li,&token); /* Passing char**, not char* */ 

變化:

addNode(li,token); 
+3

因爲'ADDNODE()'不採取大小參數,它可能不會複製數據, '需要'addNode(li,strdup(token))',因爲行不斷被修改。 – Dave

+0

addNode(li,strdup(token))without&token worked。謝謝你們倆 – dorsalfin

相關問題