c - 数组索引增量的段错误?

标签 c

我正在做作业

之前我可以毫无问题地使用这一行并且没有段错误,我不知道为什么在我编译我的代码后它现在不起作用。

这是它从 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;

最佳答案

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

关于c - 数组索引增量的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10626869/

相关文章:

c - 对于可以在编译时允许的可变大小的通用队列实现有什么想法吗?

clang-format-3.4 开关盒中右括号和冒号之间不需要的空间(C-pgm)

c++ - 如何在交叉编译期间强制链接到未安装的库

c - ncurses - printw() 不适用于长字符串 (C)

c++ - 具有列表参数 C++11/C++14 样式的 Sum 函数

c - 全局变量的替代方案 - GLUT C

c - C中的数字精度错误

c - 为什么这个函数参数不被视为这个函数的局部变量?

char* 指向一个int值,如何获取int值?

c# - 如何使选项卡控件上的选项卡消失?