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]。要获取字符,请使用 ' '.