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。还有一点需要注意的就是,在这个字符串中不能夹杂着其他的符号或者英文字母,不然就把所有的排列都打乱了。

posted @ 2020-01-06 09:46  LittleSwan  阅读(478)  评论(0编辑  收藏  举报