我想出在C下述溶液中逆轉的字符串:反向用C溶液中的字符串段錯誤
#include <stdio.h>
void reverse(char * head);
void main() {
char * s = "sample text";
reverse(s);
printf("%s", s);
}
void reverse(char * head) {
char * end = head;
char tmp;
if (!head || !(*head)) return;
while(*end) ++end;
--end;
while (head < end) {
tmp = *head;
*head++ = *end;
*end-- = tmp;
}
}
但是我的解決方案是段錯誤。根據GDB,違規行如下:
*head++ = *end;
在while循環的第一次迭代中的行段錯誤。終點指向字符串「t」的最後一個字符,頭指向字符串的開頭。那麼,爲什麼這不起作用呢?
在末尾添加 '\ 0'。 – malinois 2011-03-07 13:20:39
的\ 0,因爲你把一個解釋是在字符串 – Erik 2011-03-07 13:22:28