当我改变字符串时发生分段错误(核心转储)

时间:2017-06-30 00:30:19

标签: c segmentation-fault

我试图用C语言构建一个能够改变角色的功能' f'和/或' o'字符串到' x'。出于某种原因,当我运行程序时,我不断收到分段错误(核心转储),即使它编译没有问题。我知道当程序试图访问内存中无法访问的位置时会发生分段错误,但是,我不知道我的代码中可能会导致此问题。这是我的代码:

#include <stdio.h>

void censor(char p[]);

int main(){


    censor("foodfool");
    return 0;
}

void censor(char p[]){

    int i;
    for(i = 0;p[i] != '\0';i++){
        if(p[i] == 'f' || p[i] == 'o')
            p[i] = 'x';
        printf("%c", p[i]);     

    }

    printf("\n");
}

1 个答案:

答案 0 :(得分:2)

字符串"foodfool"是编译时常量,您无法修改。将其替换为char数组(char[])或堆分配的char指针(char*)。