c - 不使用 strrev 函数反转字符串

标签 c string reverse

如何通过仅提供 char* 和长度作为输入参数并接收反转的字符串作为输出来反转 C 中的字符串? 另外,不使用 strrev 函数。 仅通过使用循环?

编辑:好的,我现在就是这样做的:

char*  __stdcall Reverse(char *str, int length, char* *out)
{

 char *s = str;

    char *end = s + length - 1;
    for (; s < end; ++s, --end) {
        char ch = *end;
        *end = *s;
        *s = ch;
    }
      *out = str;
}

最佳答案

#include <string.h>

char *strrev(char *str)
{
  char *p1, *p2;

  if (! str || ! *str)
        return str;
  for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2)
  {
        *p1 ^= *p2;
        *p2 ^= *p1;
        *p1 ^= *p2;
  }
  return str;
}

#include <stdio.h>

int main(int argc, char *argv[])
{
  while (--argc)
  {
        printf("\"%s\" backwards is ", *++argv);
        printf("\"%s\"\n", strrev(*argv));
  }
}

您可以实现自己的 strrev (我从 here 获取它)。尝试将 c strrev source 作为 Google 查询。

关于c - 不使用 strrev 函数反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282173/

相关文章:

c - c 中的 pthread 预期声明说明符或 '...' 之前的 '('

c - strtok() 将一些字符附加到我的字符串

apache - 如何在多个端口(tcp 和 udp)上设置反向代理

c++ - 反向数组 - 没有第一个数字

c - 如何从 ext2 block 组读取 inode 表?

c - 使用 while(str[n++]! ='\0' ) 计算字符串的长度

我们可以使用 open CV 和 C 来锁定 ubuntu 中的文件或文件夹吗

Java - 从.text文件中查找匹配的字符串

java - 在将字符插入字符串时创建循环?

c++ - 如何使用数组地址反转数组?