我制作了一个用于在c:
中打印矩阵的代码int main(int argc, char** argv) {
int i,j,columna,n,m;
char sala_cine[X][Y];
sala_cine[X][Y]=
{
{' ',1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20},
{'1',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'2',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'3',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'4',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'6',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'7',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'8',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}
};
for (i=0;i<X;i++){
for(j=0;j<Y;j++)
printf("%c",sala_cine[X][Y]);
printf("\n");
}
return (EXIT_SUCCESS);
}
并且在sala_cine[X][Y]=
的行中出现了这个错误:
expeted expression before '{' token.
你能帮我解决问题吗?
谢谢
答案 0 :(得分:2)
您不能像这样在C中分配数组。但在您的情况下,您可以在声明中初始化:
int main(int argc, char** argv) {
int i,j,columna,n,m;
char sala_cine[X][Y] =
{
{' ',1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20},
{'1',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'2',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'3',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'4',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'6',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'7',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'8',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}
};
for (i=0;i<X;i++){
for(j=0;j<Y;j++)
printf("%c",sala_cine[i][j]);
printf("\n");
}
return (EXIT_SUCCESS);
}
此外,打印的for循环有一个错误,因为@Eugene指出
答案 1 :(得分:0)
使用C11,代码可以将复合文字分配给sala_cine
,现在是指针。
sala_cine = (char [X][Y]) { ... } // see below
注意:打印(char)
将打印控制字符,而不是数字'1'
。
#define X 9
#define Y 21
int main(void) {
int i,j;
char (*sala_cine)[Y];
sala_cine = (char [X][Y])
{
{' ',1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20},
{'1',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'2',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'3',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'4',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'6',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'7',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{'8',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}
};
for (i=0;i<X;i++){
for(j=0;j<Y;j++)
// printf("%c",sala_cine[X][Y]);
// Change from X,Y to i,j;
printf("%c",sala_cine[i][j]);
printf("\n");
}
return (EXIT_SUCCESS);
}
答案 2 :(得分:0)
在C中,您无法在一个步骤中声明数组,并在以后初始化它。 (正如你试图做的那样):
// WRONG
char sala_cine[X][Y]; // Declaration Step
sala_cine[X][Y]= { .... }; // Initialization Step
相反,您必须立即执行此操作:
// Correct
char sala_cine[X][Y] = { .....}; // Declaration and Initialization at once.