0

私は C プログラミングの世界に不慣れで、「ハングマン」ゲームの原始的な端末ベースのバージョンをコーディングしようとしています。

これを行う手順の 1 つ (または少なくとも私が取り組んでいる方法) は、2 番目の 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) = "*";
}
}

現在、2 つの問題があります...最初の 1 つ目: コンパイル後に表示されるエラー メッセージがわかりません:

pendu.c:41:19: warning: incompatible pointer to integer conversion assigning to 'char' from 'char [2]' [-Wint-conversion]
            *(arrayCover+i) = "*";
                            ^ ~~~
1 warning generated.

そして、私の 2 番目の質問: 2 番目に作成された、"*" で満たされた配列が表示されません。何が間違っていましたか?

少しでもお役に立てれば幸いです、乾杯!

4

4 に答える 4

2

あなたのプログラムには修正すべきエラーがいくつかあります。

1)*arraycover不明な値を指しています。初期化していません。

2)sizeof(*array)あるべきsizeof(array)

3)*(arrayCover+i) = "*"であるべき*(arrayCover+i) = '*'です。

本当に必要でない場合は、あまり多くのグローバル変数を作成しないことをお勧めします

char secretWord[100] = "Test"の代わりに 作成char *secretWord

于 2013-11-10T18:32:03.373 に答える
1

これを試して

size = sizeof(arrayCover)/sizeof(char);

for (i=0;i<size-1;i++){
    *(array+i) = '*';
}

これらすべてにもかかわらず、メモリを割り当てる必要があると思いますarrayCover

arrayCover = malloc(sizeof(char) * number_of_elements);
于 2013-11-10T18:34:23.043 に答える
0

"*"は文字列です。代わりに使用'*'して、char を取得します。

于 2013-11-10T18:29:28.440 に答える
0

"*"も含む文字列で\0、結果として 2 文字になります。代わりに'*'、ただの文字を使用してください。

関数には、以下の代わりにローカルで使用する必要がhiddenArrayある正式な引数があります。arrayarrayCover

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] = '*' */
   }
}
于 2013-11-10T18:29:40.903 に答える