【问题标题】:String allocation seg fault - why is this happening? [duplicate]字符串分配段错误 - 为什么会发生这种情况? [复制]
【发布时间】:2011-05-02 05:36:53
【问题描述】:

可能重复:
Getting Segmentation Fault

/*  Reverse a string in place
 */
#import <stdio.h>

void reverse(char * str);

int main()
{
    char * string = "This is a string.";
    printf("%s\n", string);
    reverse(string);
    printf("%s\n", string);
}

void reverse(char * str)
{   
    char * start = str;
    char * end = str;
    if(0==*str)
        return;

    //Find the end
    for(;0 != *(++end););

    end--;
    do
    {
        *end   = *end ^ *start;
        *start = *end ^ *start;
        *end   = *end ^ *start;
    }while(++start < --end);
}

我不确定为什么这个段会出错。是因为我正在用一个常量字符串初始化我的 char * 吗?

【问题讨论】:

  • 这在这个重复的问题中得到了广泛的讨论。

标签: c segmentation-fault reverse


【解决方案1】:

您正在尝试修改字符串常量。替换:

char * string = "This is a string.";

char string[] = "This is a string.";

解决这个问题。

【讨论】:

  • 该死的,我就知道这是愚蠢的事情。
猜你喜欢
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
相关资源
最近更新 更多