1

文字の配列を作成しようとしていますが、これを正しく行ってはいけません。警告メッセージが引き続き表示されます。

警告: 割り当ては、キャストなしでポインターから整数を作成します

8 列 x 4 行の配列を作成したいのですが、配列をステップ実行すると、コンパイラは 8 つの文字列の配列を表示します。コードは次のとおりです。

// Array of 8 columns by 4 rows  
char GameBoardDisplay[8][4];
// 4x4 matrix that is zero filled for the moment
int GameBoardTrack [4][4];


           //Steps through the matrix one by one and places characters in array
           for ( rowtrack = 0, rowtrack2 = 0 ; rowtrack != 4 ; rowtrack++, rowtrack2++){
            for (coltrack = 0, coltrack2= 0 ; coltrack !=4 ; ++coltrack){
               if(!GameBoardTrack[rowtrack][coltrack]){

                       GameBoardDisplay[rowtrack2][coltrack2] = '_';
                       ++coltrack2;

                   if (coltrack == 3){
                       GameBoardDisplay[rowtrack2][coltrack2] = '\n';
                   }
                   else
                       {
                       GameBoardDisplay[rowtrack2][coltrack2] = ' ';
                      ++coltrack2
               }
           }
       }

char GameBoardDisplay[8][4] を間違った方法で考えていますか? 戻って書き直すことができる文字を配置するのに 32 のスポットがあるように見えますが、何らかの理由で 8 つの文字列の配列しか作成しません。

4

3 に答える 3

4

"_"'_'文字とで形成される文字列'\0'です。欲しいキャラクター:

GameBoardDisplay[rowtrack2][coltrack2] = '_';

同じことが次の場合にも当てはまります。

GameBoardDisplay[rowtrack2][coltrack2] = '\n';

と:

GameBoardDisplay[rowtrack2][coltrack2] = ' ';

文字定数文字列リテラルの構文は次のとおりです。

C11 (n1570)、§ 6.4.4.4 文字定数

character-constant: ' c-char-sequence '

C11 (n1570)、§ 6.4.5 文字列リテラル

string-literal: encoding-prefixopt " s-char-sequenceopt "
于 2013-03-02T18:00:54.650 に答える
1

"_""\n"あり、二重引用符で囲まれたものはすべて C 文字列リテラルであり、タイプはconst char[]です。単一の文字を入力するには、次のように単一引用符またはアポストロフィを使用します。

GameBoardDisplay[rowtrack2][coltrack2] = '_';
于 2013-03-02T18:01:53.957 に答える
0

「a」が文字列で「a」が文字であり、すべて(これも変更する必要があります)に関するここでのすべての回答とは別に、別の問題(「警告:割り当てによってポインタから整数が作成されます。キャスト")は、変数GameBoardDisplayを2D char配列として宣言した直後に、2D整数配列として再宣言したことを意味します。

あなたは試すことができます、

char GameBoardDisplay[8][4];
// 4x4 matrix that is zero filled for the moment
//int GameBoardDisplay [4][4];


           //Steps through the matrix one by one and places characters in array
           for ( rowtrack = 0, rowtrack2 = 0 ; rowtrack != 4 ; rowtrack++, rowtrack2++){
            for (coltrack = 0, coltrack2= 0 ; coltrack !=4 ; ++coltrack){
               if(!GameBoardTrack[rowtrack][coltrack]){

                       GameBoardDisplay[rowtrack2][coltrack2] = '_';
                       ++coltrack2;

                   if (coltrack == 3){
                       GameBoardDisplay[rowtrack2][coltrack2] = '\n';
                   }
                   else
                       {
                       GameBoardDisplay[rowtrack2][coltrack2] = ' ';
                      ++coltrack2
               }
           }
       }
于 2013-03-02T18:12:39.283 に答える