1の場合は$で2の場合は{ }に置き換えたいのですがうまくいきません。
コアダンプとよくわからないエラーが発生しています。数値を文字列に置き換えているのでnum_p[3][4]ではなくnum_p[][]としてもうまくいきません。
解決策などありましたらアドバイス等をお願い致します。
C
1#include <stdio.h> 2int main() 3{ 4 char num[3][4] = {{1, 2, 3, 4},{1, 3, 2, 4},{4, 3, 1, 2}}; 5 char *num_p[3][4]; 6 int i, j; 7 8 num_p[3][4] = &num[0][0]; 9 10 for (i = 0; i < 3; i++) { 11 for (j = 0; j < 4; j++) { 12 printf("%5d", *num_p[i][j]); 13 if (*num_p[i][j] == 1) { 14 *num_p[i][j] = "$"; 15 } else if (*num_p[i][j] == 2) { 16 *num_p[i][j] = "{ }"; 17 } 18 } 19 printf("\n"); 20 } 21 22 return 0; 23} 24 25
エラーメッセージは、そのまま(加工などせずに)貼り付けて下さい、
配列に何も指定しない場合は
array has incomplete element type 'char *[]'
char *num_p[][];
^
test.c:17:9: error: expected expression
num_p[][] = &num[0][0];
^
test.c:17:11: error: expected expression
num_p[][] = &num[0][0];
が表示され、配列の大きさをこちらで指定した場合は
test.c:23:22: warning: incompatible pointer to integer conversion assigning to 'char' from 'char [2]' [-Wint-conversion]
*num_p[i][j] = "$";
^ ~~~
test.c:25:22: warning: incompatible pointer to integer conversion assigning to 'char' from 'char [6]' [-Wint-conversion]
*num_p[i][j] = "{ }";
^ ~~~~~~
test.c:17:3: warning: array index 4 is past the end of the array (which contains 4 elements) [-Warray-bounds]
num_p[3][4] = &num[0][0];
^ ~
test.c:14:3: note: array 'num_p' declared here
char *num_p[3][4];
^
test.c:17:3: warning: array index 3 is past the end of the array (which contains 3 elements) [-Warray-bounds]
num_p[3][4] = &num[0][0];
^ ~
test.c:14:3: note: array 'num_p' declared here
char *num_p[3][4];
のような注意喚起が表示され、実行するとzsh: segmentation fault ./a.outと表示されます。