我想出在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