Ошибка сегмента присваивания указателя - PullRequest
2 голосов
/ 26 марта 2011
#include <stdio.h>
#include <stdlib.h>
int main(){
 char *str="abcdce";
 char c='c';
 char *pfast=str,*pslow=str;
 while(*pfast!='\0'){
     if(*pfast==c){
       pfast++;
       *pslow=*pfast; //error here when pfast reaches the first 'c'
     }
    pfast++;
    pslow++;
 }
 *pslow='\0';
 return 0;
}

ошибка сегмента при выполнении оператора присваивания "* pslow = * pfast;" ...

Кто-нибудь, скажите мне, почему, заранее спасибо!

1 Ответ

8 голосов
/ 26 марта 2011

Вы пытаетесь изменить строковый литерал, который приводит к неопределенному поведению.

Изменить

char *str="abcdce";

на

char str[] ="abcdce";
...