0
我正在寫一個函數來對enfrobbed數據進行排序,而不會將整個字符串轉換回正常狀態。它通過每個測試用例,除了兩個字符串相等時,每當我發生seg-fault時。我無法弄清楚爲什麼我在這種情況下會遇到不好的內存訪問,因爲我不應該超出字符串的範圍。請注意,字符串的末尾預計爲空格,而不是空字節。C字符串Seg Fault
int i = 0;
for(; a[i] != " " && b[i] != " "; i++)
{
char axor = a[i]^'*';
char bxor = b[i]^'*';
//printf("A: %i B: %i \n", axor, bxor);
if (axor < bxor)
return -1;
if (axor > bxor)
return 1;
}
if (a[i] == " " && b[i] == " ") //a and b are equal
return 0;
if (a[i] == " ")
return -1;
else //a is greater than b
return 1;
注意,a和b是的類型char const的* 在一個段錯誤
我的意思是a = b =「aa」,表示字符串末尾的空格 – patrickd
在調試器中逐行執行代碼。 –
如果您需要更新問題中的一些重要信息,請不要將其添加爲評論,而是編輯您的問題。 –