我正在编写一个函数来对输入的数据进行排序,而不会将整个字符串转换回正常状态。它传递每个测试用例,除非两个字符串相等,每次我得到一个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”会导致段错误
答案 0 :(得分:4)
" "
是char[2]
。要获得角色,请使用' '
。