C if语句不';不行?

C if语句不';不行?,c,C,wordCur是一个大写字母字符串,dictionary是一个字符串数组,无论我在wordCur中输入什么,我总是返回0 编辑:我对代码进行了一点更新,并为一些上下文添加了程序其余部分的节略版本。如图所示,当它到达checkValid时,它会崩溃 int main() { FILE *ifp; ifp = fopen("dictionary.txt", "r"); int* lDist[26]; int* lUsed[26]; int dictLen;

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;
    }
}
intmain(){
文件*ifp;
ifp=fopen(“dictionary.txt”,“r”);
int*lDist[26];
内特*卢塞德[26];
int dictLen;
int i;
fscanf(ifp、%d、&dictLen);
字符字典[dictLen][7];
字符*字母[7];
int scoreCur=0;
int scoreHi=0;
char-wordCur[7];
char-wordHi[7];
int-isWord=0;
//将字典读入数组
对于(i=0;i
wordCur是一个大写字母字符串,dictionary是一个字符串数组

试试这个:

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;
    }  
}  
(i=0;i 如果(strcmp(wordCur,dictionary[i])==0{ 有效=1; 打破 } } wordCur是一串大写字母


不,
wordCur
是单个字符。不是字符串。C中的字符串表示为字符数组,以值为0的字符结尾。您需要一个指针参数,
char*wordCur

您的代码可能更像这样:

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;
}
int checkValid(const char*wordCur,//要搜索的单词(字符串)
int dictLen,//字典中的条目数
char dictionary[][7])//dictionary(字符串数组)
{
int valid=0;
int i;
对于(i=0;i
这是无效的C:
字典既不是数组,也不是指针。我想你在单词字典之前漏掉了一个“*”,我怀疑你的代码中漏掉了一些*字符……你可能想使用strncmp而不是比较指针地址来检查字符串是否相等。我尝试了所有这些,但没有用,当我在print中添加时用于检查值的语句,它们的输出是正确的,if语句的自我指定
dictlen
似乎确实有问题,因为原型中
字典
的元素数没有效果。可以说它是纪录片,但可能会误导。这只会使它崩溃,添加[7](字典中单词的最大长度)在[dictlen]之后使其运行,但是,它仍然始终返回0您需要发布调用代码,显示您如何定义和初始化
字典
等。我是否应该发布我的整个程序?如果是少量代码,则是,否则将其减少到合理的大小,其中仅包括checkValid函数和调用代码。
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;
}