当使用负 int 值运行下面的代码时,我遇到了分段错误。我很困惑如何解决为什么会发生这种情况。
此方法的目标是将符号转换为二进制字符串表示形式。此函数适用于正数,但适用于负数
函数调用:
int_to_binary(-1, "00000000000000000000000000000000\0");
源:
#include <stdlib.h>
#include <string.h>
#define BUFFER_SIZE 33
int int_to_binary(int input, char* output)
{
output += BUFFER_SIZE - 1;
while(input)
{
--output;
if(input & 1)
{
(*output)++;
}
input >>= 1;
}
return 0;
}
我只在 int 不等于 0 时递减指针,这意味着仍有要转换的值。任何有关如何在 Linux 中调试它的帮助将不胜感激。