没有 strrev 函数的反向字符串
Reverse String without strrev function
如何通过仅提供一个 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 查询。
如何通过仅提供一个 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 查询。