2012-01-14 36 views
0

你好每一个我做了一个小函数,它需要一个指向二维数组的指针,并用线性填充它,即我用给词填充我的二维数组。我认为它的工作很好,但是当我尝试打印我的数组时,我得到了分段错误。任何一个人都可以帮我解决问题。在打印语句中获取错误C

感谢

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

这就是为什么它不是写的东西,比如'*(表+行++)山口++] = *键+一个好主意,一个很好的例子;'。 – 2012-01-14 13:33:04

+0

无论如何,这个问题可以使用调试器来解决,所以投票结束。 – 2012-01-14 13:36:17

+0

真的,先生,我的意思是,我应该如何以更好的方式做到这一点 – mainajaved 2012-01-14 13:39:52

回答

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

不应该是 “行++”,只是 “行”。你已经在其他地方增加了“行”。

+0

非常感谢sir ...有一件事更多先生它我的代码不好意味着它不是一个好方法来填充二维数组 – mainajaved 2012-01-14 13:39:20

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++;  
     } 

    } 

} 
+0

你也有行++在错误的地方。那个评论出来的是正确的。 – 2012-01-14 23:02:13

+0

谢谢,修复它。 – karlphillip 2012-01-15 06:13:51