C字符串Seg Fault

时间:2015-10-29 08:45:54

标签: c string segmentation-fault 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”会导致段错误

1 个答案:

答案 0 :(得分:4)

" "char[2]。要获得角色,请使用' '