C if语句不';不行?
wordCur是一个大写字母字符串,dictionary是一个字符串数组,无论我在wordCur中输入什么,我总是返回0 编辑:我对代码进行了一点更新,并为一些上下文添加了程序其余部分的节略版本。如图所示,当它到达checkValid时,它会崩溃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;
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;
}