首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C或C++中就地反转字符串?

如何在C或C++中就地反转字符串?
EN

Stack Overflow用户
提问于 2008-10-13 16:36:22
回答 17查看 330.8K关注 0票数 186

如何在C或C++中反转字符串,而不需要单独的缓冲区来保存反转的字符串?

EN

回答 17

Stack Overflow用户

发布于 2008-10-13 16:39:29

代码语言:javascript
复制
#include <algorithm>
std::reverse(str.begin(), str.end());

这是C++中最简单的方法。

票数 484
EN

Stack Overflow用户

发布于 2008-10-14 03:09:25

阅读Kernighan和Ritchie

代码语言:javascript
复制
#include <string.h>

void reverse(char s[])
{
    int length = strlen(s) ;
    int c, i, j;

    for (i = 0, j = length - 1; i < j; i++, j--)
    {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}
票数 167
EN

Stack Overflow用户

发布于 2008-10-13 17:00:06

非邪恶C,假设字符串是一个以null结尾的char数组的常见情况:

代码语言:javascript
复制
#include <stddef.h>
#include <string.h>

/* PRE: str must be either NULL or a pointer to a 
 * (possibly empty) null-terminated string. */
void strrev(char *str) {
  char temp, *end_ptr;

  /* If str is NULL or empty, do nothing */
  if( str == NULL || !(*str) )
    return;

  end_ptr = str + strlen(str) - 1;

  /* Swap the chars */
  while( end_ptr > str ) {
    temp = *str;
    *str = *end_ptr;
    *end_ptr = temp;
    str++;
    end_ptr--;
  }
}
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/198199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档