簡體   English   中英

C字符串段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM