2016-07-11 15 views
-1

電卓のボードを印刷しようとしていますが、数値と文字列の両方を印刷する方法がわかりません。ここに私のコードは次のとおりです。私は、コードをコンパイルすると整数と文字列の両方を含む配列をC言語で印刷する - 動作しない

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char *argv[]) 
{ 
    int array1[4][4] = { 
     {7, 8, 9, "%"}, 
     {4, 5, 6, "x"}, 
     {1, 2, 3, "-"}, 
     {0, ".", "+", "="} 
    }; 

    for (int i = 0; i < 4; i++) 
    { 
     for (int j = 0; j < 4; j++) 
      { 
       printf("%2i", array1[i][j]); 
      } 
     printf("\n"); 
    } 
} 

が、私はエラーを取得:

error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'char [2]'

私はこの問題を解決する方法上の任意のアイデア/ヒント?

+3

整数と文字列の両方を持つ配列を持つことはできません。したがって、配列を選択する必要があります。数字を含むこともできるので、文字列を選択するのが理にかなっています。 – interjay

+2

配列に異なる型を含めることはできません。 –

+0

FWIW、 ''% "'は 'char'を与えません。せいぜい' char * 'を与えます。 –

答えて

2

array1は、Cで許可されていない整数と文字列を混在させています。状況に応じて、charデータ型に切り替えて、すべての文字に対して同じprint文を使用することができます。

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int i, j; 
    char array1[4][4] = { 
     {'7','8','9','%'}, 
     {'4','5','6','x'}, 
     {'1','2','3','-'}, 
     {'0','.','+','='}}; 

    for (i = 0; i < 4; i++) 
    { 
     for (j = 0; j < 4; j++) 
     { 
      printf("%c", array1[i][j]); 
     } 
     printf("\n"); 
    } 
} 
+0

Arr、いつも遅い! (; – Jezor

1

Cは、strongly typed languageである。つまり、int配列に値を置くことはできません。 intは、JavaScriptでvarのようなものではありません。数値型の整数値(ではなく、)が格納できるビルトインタイプです。

私はあなたが多分あなたのためのより適切なタイプはcharなり、1文字の長い文字列と1桁の数字のみを使用しようとしている見ることができます:

char array1[4][4] = { 
    {'7','8','9','%'}, 
    {'4','5','6','x'}, 
    {'1','2','3','-'}, 
    {'0', '.', '+','='} 
}; 

そして今、あなたは使用して行列を印刷することができます:

for (int i = 0; i < 4; i++) { 
    for (int j = 0; j < 4; j++) { 
     printf("%c", array1[i][j]); 
    } 
    printf("\n"); 
} 
関連する問題