前提・実現したいこと
C言語でババ抜きを開発しています。
53枚のカードのまとまり(デッキ)を作成し、それを3人のプレイヤーに順に配る処理(CreateHand)で以下のエラーが発生しました。
CreateDeck関数で生成したデッキを、CreateHand関数に渡し、player_cards配列を生成したいです。
発生している問題・エラーメッセージ
Main.c:22:12: warning: incompatible pointer to integer conversion returning 'char [53][4]' from a function with result type 'char' [-Wint-conversion] return deck; ^~~~ Main.c:26:17: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] char CreateHand(array[]) { ^ Main.c:34:9: warning: implicitly declaring library function 'strcpy' with type 'char *(char *, const char *)' [-Wimplicit-function-declaration] strcpy(player_cards[player_number][j],array[i]); ^ Main.c:34:9: note: include the header <string.h> or explicitly provide a declaration for 'strcpy' Main.c:34:47: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion] strcpy(player_cards[player_number][j],array[i]); ^~~~~~~~ Main.c:41:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ Main.c:47:16: warning: incompatible integer to pointer conversion passing 'char' to parameter of type 'int *' [-Wint-conversion] CreateHand(deck1); ^~~~~ Main.c:26:17: note: passing argument to parameter 'array' here char CreateHand(array[]) {
該当のソースコード
C
1char CreateDeck() { 2//デッキを作成する 3 char deck[53][4] = {"S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13", 4 "H1","H2","H3","H4","H5","H6","H7","H8","H9","H10","H11","H12","H13", 5 "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13", 6 "D1","D2","D3","D4","D5","D6","D7","D8","D9","D10","D11","D12","D13","J0" 7 }; 8 return deck; 9} 10 11char CreateHand(array[]) { 12//3人分の手札を生成する 13 14 //3人の手札として使う配列 15 char player_cards[3][18][4]; 16 17 int player_number = 0; 18 int j = 0; 19 for (int i = 0; i < 53; i++) { 20 21 //Aさん、Bさん、Cさん、Aさん、Bさん、Cさん、の順番でデッキからカードが無くなるまで配る 22 strcpy(player_cards[player_number][j],array[i]); 23 24 player_number++; 25 if (player_number >= 3) { 26 player_number = 0; 27 j++; 28 } 29 } 30} 31 32int main(void){ 33 34 char deck1 = CreateDeck(); 35 CreateHand(deck1); 36} 37
試したこと
関数にせず、全てのコードをmain関数に記述して実行すると、うまくいきました。
補足情報(FW/ツールのバージョンなど)
paiza.ioでコードを実行しています。
“//3人の手札として使う配列”の前にUNICODEのスペースが入っているd^^
回答3件
あなたの回答
tips
プレビュー