it-swarm.com.de

Ist die Funktion strrev () in Linux nicht verfügbar?

Ich habe versucht, mit strrev() Code zu schreiben. Ich habe <string.h> aufgenommen, bekomme aber trotzdem die Fehlermeldung "undefined Verweis auf strrev".

Ich habe festgestellt, dass strrev() keine Manpage hat. Warum? 

Unterstützt Linux nicht strrev()?

27
Dinesh

Richtig. Verwenden Sie eine der verfügbaren alternativen Implementierungen:

#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;
}
20
Sumit Naik

Leider scheint strrev in glibcs ​​string.h nicht vorhanden zu sein.

Natürlich bin ich zu spät dran, aber ich mag diese Implementierung.

#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;
}
2
cat

Es gibt keine String-Bibliotheksfunktion "Für die Umkehrung des Strings" 

strrev() ist in GCC Compiler unter Linux oder Ubuntu nicht vorhanden

1
Amarendra Deo

Es gibt keine String-Bibliotheksfunktion "für die Umkehrung der Zeichenfolge" 

strrev() ist im GCC-Compiler unter Linux oder Ubuntu nicht vorhanden .............

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);
}
0
Amarendra Deo