如何在C中反转字符串?

时间:2015-03-20 23:26:00

标签: c string

我正在尝试反转字符串,但是当我运行代码时,程序崩溃了。我究竟做错了什么? 程序应该首先显示,字符串没有被反转,然后反转。

P.S:如果你没有注意到我在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);
}

1 个答案:

答案 0 :(得分:0)

逆转功能很好,问题出在其他地方。

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() function

相关问题