在C中的print语句中获取错误

时间:2012-01-14 13:31:17

标签: c arrays pointers printing 2d

大家好我已经制作了一个小函数,它接受一个指向二维数组的指针并用线性填充它,即我用给定的字逐行填充我的二维数组。我认为它的工作正常但我得到了分段错误我试图打印我的阵列。任何人都可以帮助我在哪里出错。

由于

void create_table(char *key ,char (*table)[5]){

    int row=0, col=0;
    while(*key){
        *(table + row++)[col++] = *key++; 
                printf("%c" , table[0][0]); // Here I got seg fault

        if(col == 4){
            col=0;
            row++;      
        }

    }       

}

//===================================

int main(){
    char table[5][5];
    create_table("monarchy" ,table);
        return 0;

}

2 个答案:

答案 0 :(得分:1)

 *(table + row++)[col++] = *key++;

不应该是“row ++”,只是“row”。你已在其他地方递增“行”。

答案 1 :(得分:0)

也许,更具可读性:

void create_table(char *key ,char (*table)[5])
{
    int len = strlen(key);

    int row=0, col=0;
    while (len--)
    {
        table[row][col] = *key;
        printf("%c\n" , table[row][col]); 
        col++;
        key++;

        if (col == 4)
        {
            col = 0;
            row++;      
        }

    }

}