用C反转句子?

2 c string

我刚刚编写了一个程序,无论用户提供什么,都会反转一个句子.例如:如果用户输入"你好吗",我的程序会生成"uoy era woH".

我写的程序如下所示.我只是有一个疯狂的直觉,可以有一个比这更聪明的程序.非常感谢您提供的宝贵意见或者比这更好的计划也是最受欢迎的.

int ReverseString(char *);
main() {
  char *Str;
  printf("enter any string\n");
  gets(Str);
  ReverseString(Str);
  getch();
}
int ReverseString(char *rev) {
  int len = 0;
  char p;
  while(*rev!='\0') {
    len++;
    rev++;
  }
  rev--;
  while(len>0) {
    p = *rev;
    putchar(p);
    rev--;
    len--;
  }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢.

Dev*_*inB 7

你可以使用递归.

int ReverseString(char *rev) {
  if(*rev!='\0') {
    ReverseString(rev + 1);
    putchar(*rev);
  }
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

  • 这很好,并且是我知道扭转链表的最干净的方式 - 似乎是一个常见的面试问题.但是,对于字符串,迭代方法可能更好. (5认同)