我正在用 C 制作一個簡單的劊子手游戲,我試圖檢查字串中的每個字符是否與猜測的字符匹配。但是當我測驗它時,它給出了不正確的結果,并且首先不應該通過該if陳述句。例如,當我輸入字母a(單詞是apple)時,它會給我a__a。不知何故,這個詞變成了 4 個字母,而不是 5 個,它說最后一個字母a甚至不是。
https://imgur.com/a/DZDTbbj
#include <stdio.h>
int main() {
int size = 0;
char word[] = "apple", guess, hidden[size];
while (word[size] != '\0') {
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;
}
uj5u.com熱心網友回復:
您hidden[size]在設定size為word. 所以它使用初始值0作為陣列的長度。
將該宣告向下移動到回圈之后。此外,您需要使長度size 1為空終止符留出空間,然后添加空終止符。
int main()
{
int size=0;
char word[]="apple",guess;
while(word[size]!='\0'){
size ;
}
char hidden[size 1];
for (int i = 0; i < size; i)
{
hidden[i]='_';
}
hidden[size] = '\0';
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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/399289.html
