如何在C或C++中反转字符串,而不需要单独的缓冲区来保存反转的字符串?
发布于 2008-10-13 16:39:29
#include <algorithm>
std::reverse(str.begin(), str.end());
这是C++中最简单的方法。
发布于 2008-10-14 03:09:25
阅读Kernighan和Ritchie
#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;
}
}
发布于 2008-10-13 17:00:06
非邪恶C,假设字符串是一个以null结尾的char
数组的常见情况:
#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--;
}
}
https://stackoverflow.com/questions/198199
复制相似问题