strrev()函数在Linux中不可用吗?

我尝试使用strrev()编写代码。 我包含了但我仍然得到一个“对strrev未定义引用”错误。

我发现strrev()根本没有手册页。 为什么?

Linux不支持strrev()吗?

正确。 使用可用的替代实现之一:

 #include  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  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; } 

不幸的是,glibc的string.h似乎没有strrev

显然,我迟到了这里的代码派对,但我喜欢这个实现。

 #define MAX_CHARS 10000 // safe_usub -- perform safe unsigned subtraction size_t safe_usub (size_t x, size_t y) { return x > y ? x - y : y - x ; } char* str_reverse (const char* const str) { if (!str) { return NULL; } size_t len = strnlen(str, MAX_CHARS); char* new = malloc( sizeof(char) * len ); size_t i; for (i = 0; i < len; i++) { new[i] = str[ safe_usub(i + 1, len) ]; } new[i] = 0; return new; } 

没有字符串库函数“For reverse the string”

strrev()在Linux或Ubuntu的GCC编译器中不存在

没有任何字符串库函数“用于反转字符串”

strrev()在Linux或Ubuntu的GCC编译器中不存在………….

reverse.c:

 //////MAKE YOUR OWN REVERSE FUNCTION//// /* * C Program to Reverse the String using Recursion */ #include  #include  void reverse(char [], int, int); int main() { char str1[20]; int size; printf("Enter a string to reverse: "); scanf("%s", str1); size = strlen(str1); reverse(str1, 0, size - 1); printf("The string after reversing is: %s\n", str1); return 0; } void reverse(char str1[], int index, int size) { char temp; temp = str1[index]; str1[index] = str1[size - index]; str1[size - index] = temp; if (index == size / 2)` ` { return;`enter code here` } reverse(str1, index + 1, size); }