2009-10-11 83 views
0

我正在爲一個類的簡單lex程序,並在其中創建一個非常基本的符號表,只是一個線性掃描的搜索字符串數組。我已經聲明它:如何聲明字符串的C數組

char* identifiers[100]; 

而且我使用它像這樣:

found = false; 
for (i = 0; i < seen_identifiers; i++) { 
    if (!strcmp(identifiers[i], yytext)) { 
     printf("Identifier \"%s\" already in symbol table", yytext); 
     found = true; 
     break; 
    } 
} 
if (!found) { 
    printf("identifier: %s\n", yytext); 
    seen_identifiers++; 
    identifiers[seen_identifiers] = yytext; 
} 

但是我始終得到在STRCMP呼叫段錯誤。我確定我搞砸了一些超級簡單的東西。

+0

你如何將字符串分配給數組?你可以發佈那個示例代碼嗎? – micmoo

回答

4
seen_identifiers++; 
identifiers[seen_identifiers] = yytext; 

如果seen_identifiers從0開始,你從來沒有分配給identifiers[0]等等strcmp將發生故障。

+0

......我覺得自己像一個白癡,這是我整天用高級語言寫作的東西。 –

+0

不錯的觀察。我正在考慮無效終止。 – erelender