How to make a function to reverse a string in c

0
char* reverse(char*);

main()
{
    printf("\n%s", reverse("computer"));
}

char* reverse(char* p)
{
    int l, i;
    char t;

    for (l = 0; *(p + l) != '\0'; l++)
        ;

    for (i = 0; i < l / 2; i++)
    {
        t = *(p + i);
        *(p + i) = *(p + l - 1 - i);
        *(p + l - 1 - i) = t;
    }

    return (p);
}  

Not getting output. output shows Process returned -1073741819 (0xc0000005).

c
asked on Stack Overflow Nov 18, 2018 by changer • edited Nov 18, 2018 by bolov

1 Answer

0

You should use char st[] = "computer"; reverse(st); not reverse("computer"); for "computer" is literal string.

The following code could work:

#include <stdio.h>

char* reverse(char*);

int main() {
  char st[] = "computer";
  printf("%s\n", reverse(st));
  return 0;
}

char* reverse(char* p) {
  int l, i;
  char t;
  for (l = 0; *(p + l) != '\0'; l++)
    ;
  for (i = 0; i < l / 2; i++) {
    t = *(p + i);
    *(p + i) = *(p + l - 1 - i);
    *(p + l - 1 - i) = t;
  }

  return p;
}
answered on Stack Overflow Nov 18, 2018 by Yunbin Liu

User contributions licensed under CC BY-SA 3.0