函数在C中反转字符串

时间:2014-02-27 13:19:10

标签: c string reverse

我写了这个函数来反转C中的字符串,但是当切换字符串中的字符时程序崩溃了。我不知道是什么导致了它,所以任何帮助都会受到赞赏。

void reverse(char s[])
{
    char c;
    int i;
    int j;

    for (i = 0, j = (strlen(s) - 1); i < j; i++, j--)
    {
        c = s[i];
        s[i] = s[j]; //An error occurs here
        s[j] = c;
    }

    printf("%s", s);
}

main()
{
    reverse("Example");
}

4 个答案:

答案 0 :(得分:3)

请阅读此内容以获取更多信息What is the difference between char s[] and char *s?

另一个链接https://stackoverflow.com/questions/22057622/whats-the-difference-structurally-between-char-and-char-string#22057685

这应该解决它。

main()
{    
char array[] = "Example";
reverse(array); 
}

当你执行reverse("Example")时,这与

相同
char *string = "Example";
reverse(string) //wont work

链接应该从这里澄清你的怀疑。

答案 1 :(得分:1)

"Example"是一个字符串文字,通常意味着你无法改变它。

请试试这个:

char str[] = "Example";
reverse(str);

答案 2 :(得分:0)

这应该有效:

#include<string.h>

int main()
{
  char str[100], temp = 0;
  int i = 0, j = 0;

  printf("nEnter the string :");
  gets(str);

  i = 0;
  j = strlen(str)-1;

  while(i<j)
  {
    temp=str[i];
    str[i]=str[j];
    str[j]=temp;
    i++;
    j--;
  }

  printf("nReverse string is :%s",str);

  return(0);
}

答案 3 :(得分:-1)

您需要将字符指针作为函数中的参数:

Void reverse (char *ptr)
{
    // ...
}

并对指针执行操作。