Sida 1 av 1

Funktion för vända en sträng i C? [LÖST]

Postat: 10 dec 2007, 13:07
av ZerQ
Hej

Jag funderar på om det finns en funktion i C för att kunna vända på en sträng, jag har skrivit in en text rad som jag vill skall skrivas ut baklänges, och enligt min övningsbok så skall det finnas en fiúnktion för detta...

Har letat runt i hjälpen och lite på internet men hittar inget om denna funktion, kör Visual C++ 2005 express edition och har letat i den hjälpen men hittar inget om detta!

Någon som vet?

SV: Funktion för vända en sträng i C?

Postat: 10 dec 2007, 14:03
av Lars
Jag kan inte komma på någon sådan funktion. Men att skriva en är ju ganska enkelt och dessutom en lämplig övning när man lär sig programmera.

SV: Funktion för vända en sträng i C?

Postat: 10 dec 2007, 14:14
av tann

Kod: Markera allt

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

#ifdef TEST

#include <stdio.h>

int main(int argc, char *argv[])
{
      while (--argc)
      {
            printf("\"%s\" backwards is ", *++argv);
            printf("\"%s\"\n", strrev(*argv));
      }
}

#endif /* TEST */
eller så kan man använda _strrev
http://msdn2.microsoft.com/en-us/librar ... S.80).aspx (jag vet, MSDN... usch)

:p

SV: Funktion för vända en sträng i C? [LÖST]

Postat: 10 dec 2007, 20:11
av ZerQ
Japp nu fungerar det med hjälp av _strrev funktionen, det var den jag var på jakt efter, konstigt att jag inte fick upp den i sökresultatet i Visual C++.

Tackar för hjälpen

SV: Funktion för vända en sträng i C? [LÖST]

Postat: 10 dec 2007, 20:42
av Lars
Normalt så är det ju bra att utnyttja de funktioner som finns, då slipper man ju skriva massor av kod i onödan. Men det är också dumt att låsa in sig till en viss kompilatormiljö (oavsett om det är Visual C++ eller GCC). Man vet aldrig när man kan behöva kompilera programmet för en annan arkitektur eller ett annat operativsystem. En liten övning är kanske inget man sparar många år för att kunna återanvända koden, men det kan löna sig att göra portabel kod till en vana redan från början.

Det är lite konstigt att en övningsbok lär ut något annat än ANSI C. Jag skulle rekommendera att köra strikt ANSI C så långt som möjligt, men så tycker jag ju om standarder också :)