2

基本上我想创建一个二维字符串数组 char* grid[4][4],并希望将它们的索引显示为它们的值。例如 grid[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;

}

4

2 回答 2

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;
于 2012-12-07T19:13:46.573 回答
1

char * cfor(int j...存在于循环范围之内,而不是它之外!

char * c = malloc(3);
strcpy(c,'00')
于 2012-12-07T19:16:18.743 回答