2012-09-14 66 views
0

wordCur是大寫字母的字符串,字典是一個字符串,數組不管我投入wordCur,我總是返回0。如果聲明不起作用?

編輯:我更新的代碼一點點,並增加了刪節某些情況下程序其餘部分的版本。正如本文所示,它只是崩潰當它到達checkValid

int main() { 
    FILE *ifp; 
    ifp = fopen("dictionary.txt", "r"); 
    int* lDist[26]; 
    int* lUsed[26]; 
    int dictLen; 
    int i; 
    fscanf(ifp, "%d", &dictLen); 
    char dictionary[dictLen][7]; 
    char* letters[7]; 
    int scoreCur = 0; 
    int scoreHi = 0; 
    char wordCur[7]; 
    char wordHi[7]; 
    int isWord = 0; 





//reads the dictionary into the array 
for (i = 0; i < dictLen; i++) { 
    fscanf(ifp, "%s", &dictionary[i]); 
} 
    scanf("%s", wordCur); 
    isWord = checkValid(wordCur, dictLen, dictionary); 
    if (isWord == 1) { 
     scoreCur = calcScore(wordCur); 
    } 



//fclose(ifp); not sure why, but this causes a crash 
return 0; 
} 


int checkValid (char *wordCur,int dictLen, char dictionary[dictLen]) { 
    int valid = 0; 
    int i; 

    for (i = 0; i < dictLen; i++){ 
    int helper = strcmp(wordCur, dictionary[i]); 
    if (helper = 0){ 
     valid = 1; 
    } 
} 
+3

這不是有效的C:'dictionary'既不是數組,也不是一個指針。 – cnicutar

+0

我想你錯過了一個'*'之前的單詞**字典** – hmmftg

+1

我懷疑你缺少你的代碼中的一些*字符...並且你可能想要使用strncmp而不是比較指針地址來檢查字符串是否相等 –

回答

0

你的代碼應該看起來可能是這樣的:

int checkValid(const char *wordCur,  // word to search for (string) 
       int dictLen,    // no of entries in dictionary 
       char dictionary[][7])  // dictionary (array of strings) 
{ 
    int valid = 0; 
    int i; 
    for (i = 0; i < dictLen; i++) 
    { 
     if (strcmp(wordCur, dictionary[i]) == 0) 
     { 
      valid = 1; 
      break; 
     } 
    } 
    return valid; 
} 
+0

指定'dictlen'作爲元素的數量原型中的「字典」不起作用。可以說它是紀錄片,但它可能會誤導。 – cdarke

+0

,它只是使它崩潰,在[dictlen]使它運行後添加[7](字典中的單詞的最大長度),但是,它仍然總是返回0 – TLET

+0

您需要發佈調用代碼,顯示如何擁有定義和初始化'字典'等。 –

0

wordCur是大寫字母組成的字符串,字典是一個字符串數組

試試這個:

int checkValid (const char *wordCur,int dictLen, const char *dictionary[]) 

順便說一句,即使在找到你要找的東西之後,你仍然繼續搜索,而且對於字符串來說,comaprison是錯誤的。我建議:

for (i = 0; i < dictLen; i++){ 
    if (strcmp(wordCur, dictionary[i]) == 0){ 
     valid = 1; 
     break; 
    } 
} 
2

wordCur是大寫字母

int checkValid (char wordCur,int dictLen, char dictionary[dictLen]) 

沒有,wordCur是單個字符的字符串。不是一個字符串。 C中的字符串表示爲一個字符數組,由值爲0的字符結尾。您需要一個指針參數char *wordCur