2012-05-16 46 views
0

我试图做我的作业数组索引中增加的分段错误?

在我可以使用这条线没有任何问题,没有分段错误,我不知道为什么现在编译我的代码后,它不工作。

这是它从main()如何调用:

rb = ascii(back_data[i], phr); 

这是数据在main()如何界定:

char phr[41]; 

int ascii(const char back[ ], char data[ ]){ 
    int l = 0, n = 0, i = 0, co = 0; 
    char binary_holder[8], char_set; 

    binary_holder[0] = '\0'; 

    l = strlen(back); 

    for (i = 0; i <= l; i++){ 

    if (back[i] == '0' || back[i] == '1' && co < 8){ 

     binary_holder[co] = back[i]; 
     co++; 
    } 
    if(co == 8){ 

     binary_holder[8] = '\0'; 
     co = 0; 
    } 

    char_set = strtol(binary_holder, NULL, 2); 

    if (char_set > 31 && char_set != 127){ 
     data[n++] = char_set; 
    } 


    } 

我忘了提,这个问题是在这里,我不能弄清楚为什么

data[n++] = char_set;

+2

向我们展示'data'的详细信息 –

+1

什么是'n',它的初始值是多少? – xxbbcc

+0

为什么你三次调用相同的函数?什么是数据[],它在哪里定义? – wildplasser

回答

3

看起来像ascii(back_data[i], phr);第一个参数是char而不是指向char的指针。这个非指针传递给strlen() —繁荣。

+0

我真的不明白你能解释一下吗? – Ali

+0

要真正解释一下,你能否给我们申报'back_data'? – Jens