我试着用代码编写代码strrev().我包括<string.h>但仍然得到一个"未定义的引用strrev"错误.
我发现strrev()根本没有手册页.为什么?
Linux不支持strrev()吗?
Ign*_*ams 36
正确.使用可用的替代实现之一:
#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;
}
Run Code Online (Sandbox Code Playgroud)
Sum*_*aik 23
#include <string.h>
char *strrev(char *str)
{
if (!str || ! *str)
return str;
int i = strlen(str) - 1, j = 0;
char ch;
while (i > j)
{
ch = str[i];
str[i] = str[j];
str[j] = ch;
i--;
j++;
}
return str;
}
Run Code Online (Sandbox Code Playgroud)
为了准确回答您的问题,
\nstrrev() 在 Linux 上不可用吗?
\nstring.h 库中提供了 strrev() 函数。函数 strrev() 包括一些其他字符串函数,例如 strupr()、strlwr()、strrev(),这些函数仅在 ANSI C (Turbo C/C++) 中可用,在标准 C-GCC 编译器中不可用。
\n它\xe2\x80\x99与系统无关。它与您正在使用的 C 编译器有关。
\n参考:
\nhttps://discuss.codechef.com/t/is-strrev-function-not-available-in-standard-gcc-compiler/2449
\nhttps://www.csestack.org/undefined-reference-to-strrev/
\n