我不知道为什么会出现这个错误

时间:2015-10-16 15:50:48

标签: c

我制作了一个用于在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.

你能帮我解决问题吗?

谢谢

3 个答案:

答案 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.