虽然使用数组的char,但指向整数的指针不兼容

时间:2013-11-10 18:25:27

标签: c arrays pointers printf

我是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.

我的第二个问题:创建的第二个数组,填充“*”没有显示,我做错了什么?

我喜欢一些帮助,欢呼!

4 个答案:

答案 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] = '*' */
   }
}