基本上我想创建一个二维字符串数组 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;
}
最佳答案
替换:
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;
关于string - 显示二维字符串数组的索引作为它们的值。例如arr[2][1] = "21"和 arr[3][1] = "31"等等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13769505/