我是C编程世界的新手,我试图编写一个基于终端的原始版本的“Hangman”游戏。
执行此操作的步骤之一(或者至少是我正在处理的方式)是创建第二个char数组(在存储需要猜测的单词的原始char数组旁边),填充“*”对于原始数组的每个Char,并显示它。虽然编程部分的其余部分还没有(因为我尚未完成),但我怀疑它现在是否相关(但我已经知道如何继续,即如果我没有被某些错误所困扰 - 消息)....
这是我到目前为止的代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
void hiddenArray(char array[]);
char *secretWord;
char *arrayCover;
char letter;
int main(int argc, char *argv[]){
secretWord = "Test";
printf("Welcome to the Hangman!\n\n");
hiddenArray(secretWord);
printf("What is the hidden Word?: %c\n", *arrayCover);
printf("Guess a letter\n");
scanf("%c", &letter);
}
void hiddenArray(char array[]){
int size,i;
size = sizeof(*array);
for (i=0;i<size-1;i++){
*(arrayCover+i) = "*";
}
}
现在我有两个问题......第一个: 我不明白编译后我得到的错误信息:
pendu.c:41:19: warning: incompatible pointer to integer conversion assigning to 'char' from 'char [2]' [-Wint-conversion]
*(arrayCover+i) = "*";
^ ~~~
1 warning generated.
我的第二个问题:创建的第二个数组,填充“*”没有显示,我做错了什么?
我喜欢一些帮助,欢呼!
答案 0 :(得分:2)
您的程序有一些错误需要纠正。
1)您的*arraycover
指向某个未知值,您尚未对其进行初始化。
2)sizeof(*array)
应为sizeof(array)
3)*(arrayCover+i) = "*"
应为*(arrayCover+i) = '*'
;
我建议你不要在你真的不需要的时候创建太多的全局变量
创建char secretWord[100] = "Test"
而不是char *secretWord
答案 1 :(得分:1)
试试这个
size = sizeof(arrayCover)/sizeof(char);
for (i=0;i<size-1;i++){
*(array+i) = '*';
}
尽管如此,我认为您需要为arrayCover
arrayCover = malloc(sizeof(char) * number_of_elements);
答案 2 :(得分:0)
"*"
是一个字符串。请使用'*'
来获取字符。
答案 3 :(得分:0)
"*"
是一个字符串,其中也包含\0
,结果为2个字符。而是使用'*'
这只是一个角色。
函数hiddenArray
具有正式参数array
,需要在本地使用,而不是arrayCover
,如下所示
void hiddenArray(char array[]){
int size,i;
size = sizeof(array)/sizeof(array[0]);
for (i=0;i<size-1;i++){
*(array+i) = '*'; /* Or array[i] = '*' */
}
}