0

i am trying to reverse a string in c. But i cant figure out how to return the string from my function.Heres my code


int len(char string[]) {
    int i = 0;
    while (string[i] != 0) {
        i++;
    }
    return i;
}
char* reverse(char string[])
{
    static char reversedString[len(string)];
    for (int i = 0;string[i] != 0;i++) {
        reversedString[i] = string[len(string)-i];
    }
    return reversedString;
}
int main(void) {
    char a[5] = "abcde";

    printf("%s",reverse(a));
    return 0;
}
Silent
  • 1
  • 1
    If that still doesn't help then suggest you fire up your favourite search engine and type in "return a string from a function in C". – kaylum Jun 06 '22 at 11:19
  • char a[5] = "abcde"; there is NO space for the null terminator. – ulix Jun 06 '22 at 16:14

1 Answers1

0

Instead of returning a static char array, just reverse the string in place.

char* reverse(char* string)
{
  const int n = len(string);
  for (int i = 0; i < n / 2; ++i)
  {
    char tmp = string[i];
    string[i] = string[n - 1 - i];
    string[n - 1 - i] = tmp;
  }
  return string;
}

Of course you only do half the string (i < n/2), since otherwise it will return the string in original order.

AndersK
  • 35,813
  • 6
  • 60
  • 86