如何在C中反转字符串?

如何在C中反转字符串?,c,string,C,String,我试图反转字符串,但当我运行代码时,程序崩溃。我做错了什么? 程序应该先显示字符串而不反转,然后再反转 如果你没有注意到我在C完全是新手的话 #include <stdio.h> #include <stdlib.h> #include <string.h> void reverseString(char* str); int main() { char* str = "Hello World"; printf(str); revers

我试图反转字符串,但当我运行代码时,程序崩溃。我做错了什么? 程序应该先显示字符串而不反转,然后再反转

如果你没有注意到我在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);
}
#包括
#包括
#包括
无效反向限制(字符*str);
int main()
{
char*str=“你好,世界”;
printf(str);
反向限制(str);
返回0;
}
无效反向限制(字符*str)
{
int i,j;
焦炭温度;
i=j=temp=0;
j=strlen(str)-1;

对于(i=0;i反转功能很好,问题在于其他地方

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);
}
#包括
#包括
#包括
无效反向限制(字符*str);
int main()
{
char-str[256];
strcpy_s(str,“你好世界”);
printf(str);
反向限制(str);
返回0;
}
无效反向限制(字符*str)
{
int i,j;
焦炭温度;
i=j=temp=0;
j=strlen(str)-1;

对于(i=0;i)您正在修改字符串文字。您可能希望使用strev()函数,但正如前面提到的,您正在尝试修改“Hello World”但这是一个字符串文字,意思是,它在只读内存中,您将得到一个异常。您首先需要将其复制到字符数组并修改数组。因此,如果我将其复制到数组并将其传递给函数,它应该可以工作,对吗?是的,可以工作。或者将
char*str=“Hello World”
更改为
char[]=“Hello World”
至少您正在处理的是一个可变的
字符序列,而不是只读文本。请注意,
strev
函数仅在Microsoft Windows上可用。使用
strev
将使您的代码不可移植。您使用了哪些库?