2015-10-16 128 views
-1

我犯了一个代码为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

要打印'sala_cine [i] [j]',不'sala_cine [X] [Y]'。我希望你有你的'X,Y'定义。 –

+0

您正在混合'char'和'int'值:''1''是显示一个字符的字符,'1'是一个特殊字符而不是字符。 –

回答

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指出

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); 
} 
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. 
相关问题