gpt4 book ai didi

c - 如果已经比较了一个字符,我如何在两个 c_strings 之间进行比较检查?

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:22 25 4
gpt4 key购买 nike

具体来说,我实际上是在编写取自“拼字游戏”的函数。我必须得到 10 个字符的单词,并且根据玩家的字母,检查是否可以用这些字母组成单词。我在检查具有更多相同类型字母的单词时遇到问题。这是我的代码:`

int main(int argc, char** argv) {

int num = 10;
char lett[num] = {'f','c','a','a','b','s','t','o','e','m'};
char word[10];
bool isUsable[num] = {true};

// Input word

do {
printf("Insert the word : ");
scanf(" %s", &word[0]);
system("CLS");
} while (strlen(word)>num);

printf("your word is : %s \n", word);

// Verificy word

bool isChecked;

for (int i = 0;i<strlen(word);i++) {
isChecked = false;

// compare every char of word[] with array lett[]

for(int j = 0;j<num;j++) {


// if word[i] = lett[j] --> make boolean associated to that letter not usable anymore and make the the boolean associated to the char of the word checked

if (word[i]==lett[j]) {

if (isUsable[j]) {
isUsable[j] = false;
isChecked = true;
}

}

}

// if at least one char of the word result not checked display error

if (!isChecked) {

printf("\n You have not the necessary letters!\n");
system("pause");
return 0;

}
}

// rest of the code ..

return 0;
}

例如,代码适用于单词 ("cab"),但不适用于单词 ("acab")。 (对不起,小游戏 :D)

我在想我使用 bool 数组可能是错误的,但我不知道如何不使用它。

我也认为可能有一个使用指针的解决方案,但我仍然不太擅长用指针管理解决方案..

最后的想法是一个愚蠢的错误,但我找不到它..所以..有人知道我做错了什么吗?

最佳答案

你不要打破这个循环:

 for(int j = 0;j<num;j++) {
if (word[i]==lett[j]) {
if (isUsable[j]) {
isUsable[j] = false;
isChecked = true;

这意味着当您检查 acab 的第一个字母时,列表中的每个 'a' 都将被标记为 isUsable = false。找到第一个字母时需要break:

if (isUsable[j]) {
isUsable[j] = false;
isChecked = true;
break;

第二个问题是您没有正确初始化isUsable 数组。

Here is a live example of it working.

关于c - 如果已经比较了一个字符,我如何在两个 c_strings 之间进行比较检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33922088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com