![](/img/trans.png)
[英]Why am I not using '->' correctly? I know it is probably a simple conceptual mistake, but don't know why
[英]i don't know why it appears this mistake
我编写了一个代码,用于在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.
您能帮我解决问题吗?
谢谢
您不能像这样在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指出
使用C11,代码可以将复合文字分配给sala_cine
,它现在是一个指针。
sala_cine = (char [X][Y]) { ... } // see below
注意:print (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);
}
在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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.