我正在做作业
之前我可以毫无问题地使用这一行并且没有段错误,我不知道为什么在我编译我的代码后它现在不起作用。
这是它从 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/