我必須爲我的C編程類編寫一個程序,將IPV4地址轉換爲IPV6。我們提供了轉換功能(下面的代碼實際轉換)。我在運行此代碼時遇到了XCode中的問題。我使用了中斷點,並發現當它遇到sprintf()
線路時會崩潰。它崩潰:Program received signal: 「SIGABRT」. sharedlibrary apply-load-rules all
。我在基於Windows的編譯器上測試了完全相同的代碼,並且運行良好。什麼會導致它在一個而不是另一個上失敗?我的程序可以在Windows上運行,而不是Mac在分級過程中,如果沒有修復程序,那麼我會在Windows上編寫程序的其餘部分,但我更願意使用Mac,因此任何幫助都是值得讚賞的。在xcode上崩潰,但不在windows上。 SIGABRT?
strncpy(IPV6, "0000:0000:0000:0000:0000:0000:", 30);
sscanf(input, "%u.%u.%u.%u", &a, &b, &c, &d);
sprintf(hexIP, "%02X%02X:%02X%02X", a, b, c, d);
strncat(IPV6, hexIP, 9);
感謝
編輯
int makeIPV6(const char input[25], char IPV6[40], int style)
{
unsigned int a, b, c, d, e, f;
char hexIP[9];
char hexMAC[24];
printf("Stage 2\n");
strncpy(IPV6, "0000:0000:0000:0000:0000:0000:", 30);
sscanf(input, "%u.%u.%u.%u", &a, &b, &c, &d);
sprintf(hexIP, "%02X%02X:%02X%02X", a, b, c, d);
strncat(IPV6, hexIP, 9);
return strlen(IPV6)
}
你知道你在用什麼編譯器嗎?在Xcode中,您可以在您的項目上執行** Get Info **並檢查構建設置。你在Windows上使用什麼編譯器? – BoltClock 2011-04-03 04:31:48
你可以發佈你的變量聲明嗎?看來你正在調用在Windows中巧合運行的未定義行爲。 – 2011-04-03 04:36:57
在Mac上,它是GCC4.2(我認爲)和windows認爲它是mingw(我使用quincy所以它使用) – Darc 2011-04-03 04:39:04