簡體   English   中英

在C中反轉字符串的函數

[英]Function to reverse string in C

我編寫了此函數以反轉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");
}

閱讀此以獲得更多信息char s []和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

鏈接應從此處闡明您的疑問。

"Example"是字符串文字,通常意味着您無法更改它。

請嘗試以下方法:

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

這應該工作:

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

您需要將字符指針作為函數中的參數:

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

並在指針上執行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM