我有下面的代碼,它的主要用途是反轉字符串的字符。因此,例如,字符串I love cats
將被轉換爲stac evol I
。在C中反轉字符串時出現分段錯誤
#include <string.h>
#include <stddef.h>
#include <stdio.h>
void reverseString(char *str)
{
int size = strlen(str);
char *end = str + size - 1;
char tmp;
while (end > str) {
tmp = *str;
*str = *end;
*end = tmp;
end--;
str++;
}
}
int main()
{
char *str = "Y U SEGMENTATION FAULT?";
reverseString(str);
}
當我運行這個,我得到一個分段錯誤,我看不出爲什麼。另外,我的另一個問題是這個函數的時間複雜度(大O)。我相信它應該是O(n/2),因爲我沒有經歷所有的陣列,只是它的一半。我對嗎?
'O(N/2 )== O(0.5 * n)== O(c * n)== O(n)',所以反轉字符串在'O(n)' – 2013-02-12 10:42:37
'char str [] =「YU分段故障? ;' – hmjd 2013-02-12 10:43:14
我真的很抱歉。我沒有看到其他問題。這是重複的是的。 – 2013-02-12 10:45:31