0

wordCur は大文字の文字列で、dictionary は文字列の配列です。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;
    }
}
4

3 に答える 3

2

wordCur は大文字の文字列です

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

いいえ、wordCur単一の文字です。文字列ではありません。C の文字列は、文字の配列として表され、値 0 の文字で終了します。ポインタ引数 が必要ですchar *wordCur

于 2012-09-14T07:58:45.887 に答える
0

wordCur は大文字の文字列で、dictionary は文字列の配列です

これを試して:

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

ところで、探しているものが見つかった後も検索を続けますが、とにかく文字列の比較は間違っています。私は提案します:

for (i = 0; i < dictLen; i++){  
    if (strcmp(wordCur, dictionary[i]) == 0){  
        valid = 1;  
        break;
    }  
}  
于 2012-09-14T07:57:00.090 に答える
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;
}
于 2012-09-14T08:06:19.213 に答える