Linux下c语言中指针实现汉字字符串的逆置
#include<stdio.h> int main() { char str[100] = "你好呀我也好"; char *str_start = &str[0]; int j = 0; while(str[j])j++; char *str_end = &str[j-1]; while(str_start < str_end) { char tmp = *str_start; *str_start = *(str_end-2); *(str_end-2) = tmp; //str_start++; //str_end--; tmp = *(str_start+1); *(str_start+1) = *(str_end-1); *(str_end-1) = tmp; tmp = *(str_start+2); *(str_start+2) = *str_end; *str_end = tmp; str_start += 3; str_end -= 3; } printf("%s\n",str); return 0; }
这里有一点需要注意的就是,在逆置的过程中,单个汉字在char数组中的内容排列是不能进行改变的。在windows中单个汉字占2个byte,但是在Linux中单个汉字占3个byte。还有一点需要注意的就是,在这个字符串中不能夹杂着其他的符号或者英文字母,不然就把所有的排列都打乱了。