【问题标题】:Display index of 2 dimensional string array as their value.eg. arr[2][1] = "21" and arr[3][1] = "31" and so on将二维字符串数组的索引显示为它们的值。例如。 arr[2][1] = "21" 和 arr[3][1] = "31" 等等
【发布时间】:2012-11-26 00:14:43
【问题描述】:

基本上我想创建一个二维字符串数组 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;

}

【问题讨论】:

    标签: string multidimensional-array


    【解决方案1】:

    替换:

     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;
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-03-21
        • 2015-08-19
        • 1970-01-01
        • 2016-03-26
        • 2017-11-06
        • 2010-11-18
        • 1970-01-01
        • 2020-10-25
        • 2023-01-11
        相关资源
        最近更新 更多