为什么我的 C 代码说 char 与其他 char 匹配,即使它确实如此?
Why does my C code say char matches other char even tho it does?
我正在用 C 语言制作一个简单的刽子手游戏,我正在尝试检查字符串中的每个字符是否与猜测的字符匹配。但是当我测试它时,它给出的结果是不正确的,一开始就不应该通过 if
语句。例如,当我输入字母 a
(单词是 apple
)时,它会给我 a__a
。不知何故这个词变成了 4 个字母而不是 5 个字母,它说最后一个字母是 a
即使它不是。
#include <stdio.h>
int main() {
int size = 0;
char word[] = "apple", guess, hidden[size];
while (word[size] != '[=10=]') {
size++;
}
for (int i = 0; i < size; ++i) {
hidden[i] = '_';
}
while (1) {
printf("%s\n", hidden);
scanf(" %c", &guess);
for (int y = 0; y < size; ++y) {
if (word[y] == guess) {
hidden[y] = guess;
}
}
}
return 0;
}
您在将 size
的长度设置为 word
的循环之前声明了 hidden[size]
。所以它使用初始值 0
作为数组的长度。
将该声明向下移动到循环之后。此外,您需要使长度 size+1
为空终止符留出空间,然后添加空终止符。
int main()
{
int size=0;
char word[]="apple",guess;
while(word[size]!='[=10=]'){
size++;
}
char hidden[size+1];
for (int i = 0; i < size; ++i)
{
hidden[i]='_';
}
hidden[size] = '[=10=]';
while(1){
printf("%s\n",hidden );
scanf(" %c",&guess);
for (int y = 0; y < size; ++y)
{
if (word[y] == guess)
{
hidden[y]=guess;
}
}
}
return 0;
}
我正在用 C 语言制作一个简单的刽子手游戏,我正在尝试检查字符串中的每个字符是否与猜测的字符匹配。但是当我测试它时,它给出的结果是不正确的,一开始就不应该通过 if
语句。例如,当我输入字母 a
(单词是 apple
)时,它会给我 a__a
。不知何故这个词变成了 4 个字母而不是 5 个字母,它说最后一个字母是 a
即使它不是。
#include <stdio.h>
int main() {
int size = 0;
char word[] = "apple", guess, hidden[size];
while (word[size] != '[=10=]') {
size++;
}
for (int i = 0; i < size; ++i) {
hidden[i] = '_';
}
while (1) {
printf("%s\n", hidden);
scanf(" %c", &guess);
for (int y = 0; y < size; ++y) {
if (word[y] == guess) {
hidden[y] = guess;
}
}
}
return 0;
}
您在将 size
的长度设置为 word
的循环之前声明了 hidden[size]
。所以它使用初始值 0
作为数组的长度。
将该声明向下移动到循环之后。此外,您需要使长度 size+1
为空终止符留出空间,然后添加空终止符。
int main()
{
int size=0;
char word[]="apple",guess;
while(word[size]!='[=10=]'){
size++;
}
char hidden[size+1];
for (int i = 0; i < size; ++i)
{
hidden[i]='_';
}
hidden[size] = '[=10=]';
while(1){
printf("%s\n",hidden );
scanf(" %c",&guess);
for (int y = 0; y < size; ++y)
{
if (word[y] == guess)
{
hidden[y]=guess;
}
}
}
return 0;
}