簡體   English   中英

如何在C中反轉字符串?

[英]How to reverse a string in C?

我試圖反轉一個字符串,但是當我運行代碼時,程序崩潰了。 我究竟做錯了什么? 該程序應該首先顯示,而后不反轉字符串。

PS:如果您沒有注意到,我是C語言的新手。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverseString(char* str);
int main()
{
    char* str = "Hello World";
    printf(str);
    reverseString(str);
    return 0;
}
void reverseString(char* str)
{
    int i, j;
    char temp;
    i=j=temp=0;

    j=strlen(str)-1;
    for (i=0; i<j; i++, j--)
    {
        temp=str[i];
        str[i]=str[j];
        str[j]=temp;
    }
    printf(str);
}

反向功能很好,問題出在其他地方。

char* str = "Hello World";

在這里, str指向不變的字符串文字。 它放在程序的數據段中,對其內容的修改將始終導致崩潰。

嘗試這個:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverseString(char* str);
int main()
{
    char str [256];
    strcpy_s(str, "Hello World");
    printf(str);
    reverseString(str);
    return 0;
}
void reverseString(char* str)
{
    int i, j;
    char temp;
    i=j=temp=0;

    j=strlen(str)-1;
    for (i=0; i<j; i++, j--)
    {
        temp=str[i];
        str[i]=str[j];
        str[j]=temp;
    }
    printf(str);
}

另一個選擇是strrev()函數

暫無
暫無

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

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