[英]C strings Seg Fault
我正在編寫一個函數,可以對加密的數據進行排序,而無需將整個字符串都轉換回正常值。 它通過了每個測試用例,除了兩個字符串相等時,而且每次都出現段錯誤時。 我不知道為什么在這種情況下我會得到錯誤的內存訪問,因為我不應該超出字符串范圍。 請注意,字符串的結尾應為SPACE,而不是空字節。
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”會導致段錯誤
" "
是一個char[2]
。 要獲取字符,請使用' '
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.