I tried to write code using strrev()
. I included <string.h>
but still I'm getting an "undefined reference to strrev
" error.
I found that strrev()
doesn't have man page at all. Why?
Doesn't Linux support strrev()
?
I tried to write code using strrev()
. I included <string.h>
but still I'm getting an "undefined reference to strrev
" error.
I found that strrev()
doesn't have man page at all. Why?
Doesn't Linux support strrev()
?
Correct. Use one of the alternative implementations available:
#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 <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;
}
Unfortunately, strrev
seems to be absent from glibc's string.h
.
Obviously, I'm late to the here's-some-code party, but I like this implementation.
#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;
}
There is no string library function "For reverse the string"
strrev()
is not present in GCC Compiler in Linux or Ubuntu
There Is No Any String Library Function "For Reverse The String"
strrev()
Is Not Present in GCC Compiler In Linux Or Ubuntu.............
reverse.c:
//////MAKE YOUR OWN REVERSE FUNCTION////
/*
* C Program to Reverse the String using Recursion
*/
#include <stdio.h>
#include <string.h>
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);
}