2013-03-12 86 views
0

这里是我的代码:获取NULL错误

void printlist(struct node *st) { 
    while(st != NULL); { 
    printnode(st); 
    st=st->next; 
    } 
    return; 
} 

运行PROG时,但是我有一个错误:parse error before;
我不明白错误所在。

+0

假设“解析错误之前;'是从编译器中获得的错误,这意味着程序中的其他地方存在错误 - 您是否可以发布显示错误的最小实际程序? – 2013-03-12 21:27:17

回答

4

此:

while(st != NULL); { 

需求是这样的:

while(st != NULL) { 

分号是问题。

+1

正如@EdwinBuck所说,这不是一个分析错误。这是完全有效的C,如果几乎肯定不是OP想要做的。 – 2013-03-12 21:25:28

+0

我只是假设分析器错误在printnode()函数内,并且他传递了一个空节点。 – user1751547 2013-03-12 21:28:41

3
while(st != NULL); { 
    printnode(st); 
    st=st->next; 
    } 

实际上并没有做到您认为的那样。让我为你格式化它

while (st != NULL) ; 

    { 
    printnode(st); 
    st=st->next; 
    } 

这意味着,虽然st不为空,你什么都不做,那么你无条件地运行下一个块。

+0

另外,一些包含链并没有将NULL定义为0.如果使用其中之一,正确的语法是'while(st!= 0){...}' – 2013-03-12 21:35:26