以負整數值運行下面的代碼時出現分段錯誤。我難以理解如何解決這種情況發生的原因。將負整數轉化爲二進制時出現分割錯誤
此方法的目標是將簽名轉換爲二進制字符串表示形式。此功能爲正數,但在負數出現segfaults
函數調用:
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中進行調試的幫助將不勝感激。
明顯的建議是要安裝並啓動[DDD](http://www.gnu.org/software/ddd/) – damienfrancois