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