2015-10-16 129 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. 
相關問題