显示二维字符串数组的索引作为其值.eg。 arr [2] [1] =“21”和arr [3] [1] =“31”等等

时间:2012-12-07 19:09:54

标签: string multidimensional-array

基本上我想创建一个二维字符串数组char * grid [4] [4],并希望将它们的索引显示为它们的值。例如,网格[2] [1]将具有字符串" 21"作为它的价值。 但它们是这段代码中的一些错误,在运行时它会给我分段错误错误。请帮帮我。

char* grid[DIMENSION][DIMENSION];

for (int i = 0; i < DIMENSION; i++)
{
    for (int j = 0; j < DIMENSION; j++)
    {   
        char* c = malloc(3 * sizeof(char));
        c = "00\0";            
        c[0] = c[0] + i;
        c[1] = c[1] + j;
        grid[i][j] = c;

    }
}        

for (int i = 0; i < DIMENSION; i++)
{ 
    for (int j = 0; j < DIMENSION; j++)
    {
        printf("%s\t", grid[i][j]);         
    }

    printf("\n");

}

return 0;

}

2 个答案:

答案 0 :(得分:2)

替换:

 char* c = "00";
 c[0] = c[0] + i;

char c[] = "00";
c[0] = c[0] + i;

通常无法更改字符串文字的值。使用gcc,您可以通过指定-fwritable-strings来更改此行为。许多编译器会将字符串文字放入不可写的段中,但通过将c声明为字符数组,可以保证它是可写的。 (尽管现在您在分配到grid时遇到问题,因此您可能希望使用malloc。)

char *c = xmalloc(3);  /* xmalloc wraps malloc with error checking */
c[0] = '0' + i;
c[1] = '0' + j;
c[2] = 0;

答案 1 :(得分:1)

char * c存在于for(int j...循环的范围内,而不在其外部!

char * c = malloc(3);
strcpy(c,'00')