刚开始编程,才几周.try 制作一个Wordle克隆听起来像是一个很好的练习,所以我今天早些时候开始了.顺便说一句,我也真的没有学到关于指针的东西.
在42号线遇到问题:
string result = check(guess[i], key)
当我try 使用我的check
函数时,CLI向我返回以下内容:
不兼容的指针类型正在使用类型为‘字符串*’(也称为‘char**’)的表达式初始化‘字符串’(又名‘char*’)
第二个问题是,我可以得到猜测中每个字母的支票,但它们存储在一个名为letter
的数组中,我想将它们组合到一个字符串中,以表示:第一个字母:正确的点,第二个字母:不是在Word中...等等.不确定这是否可能.
我还试图从我的函数传回字母数组,但不确定它是如何工作的.但我想我能弄明白这一点.我也考虑过传回int
分,由此我可以推断结果,但不确定哪种方法是最好的.
很抱歉用了呕吐这个词,但我真的想完成这件事,但我不知道go 哪里.
#include <cs50.h>
#include <ctype.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
string word_list[] = { "blind", "sheet", "crush", "relax", "drain",
"label", "expel", "thump", "shade", "resin", "alert", "dream",
"flood", "guard", "adult", "force", "wound", "drain", "cable"
};
string key;
string *check(string guess, string key);
int main(void)
{
char ready;
do {
ready = get_char("Welcome to wordle! Are you ready to play? (y/n) ");
} while (ready != 110 && ready != 121);
if (ready == 121) {
int ran;
srand(time(NULL));
ran = rand() % 18;
key = word_list[ran];
} else {
return 1;
}
int guess_num = 1;
string guess[5];
for (int i = 0; i < 5; i++)
do {
guess[i] = get_string("Guess %i:\n", guess_num);
string result = check(guess[i], key);
printf("%s\n", result);
if (strlen(guess[i]) == 5) {
guess_num++;
}
} while (strlen(guess[i]) != 5);
}
string *check(string guess, string keys)
{
string correct = "in correct spot." ;
string almost = "in the word, wrong spot.";
string not = "not in word.";
string letter[5];
for (int i = 0; i < 5; i++)
if (guess[i] == key[])
{
letter[i] = correct;
}
else if (guess[i] == key[0] || guess[i] == key[1] || guess[i] == key[2] || guess[i] == key[3] || guess[i] == key[4])
{
letter[i] = almost;
}
else
{
letter[i] = not;
}
return letter;
}
我try 了多个网站和教程,但没有真正理解,或者解决方案是针对类似的问题,但没有解决我自己的.