如何使函数在C中反转字符串

时间:2018-11-18 08:21:29

标签: c

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

未获得输出。输出显示流程返回了-1073741819(0xc0000005)。

1 个答案:

答案 0 :(得分:0)

您应该使用char st[] = "computer"; reverse(st);而不是reverse("computer");,因为“计算机”是文字字符串。

以下code可以工作:

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