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;

4

1 回答 1

3

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

于 2012-05-16T21:52:02.223 回答