2011-03-26 2 views
2
#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;"...숯불 포인터 할당 세그먼트의 잘못의 할당 문에 실행

누군가가 사전에 왜 감사를 말해!

+2

로는'pslow = pfast ™ 찾으셨습니까? –

답변

8

정의되지 않은 동작으로 이어지는 문자열 리터럴을 변경하려고합니다. `;

변경

char *str="abcdce"; 

char str[] ="abcdce"; 
+0

고마워요 – witmusk

+1

@witmusk : 천만에. 귀하는 새 질문으로 지금까지 질문하신 사항에 대한 답변을 수락하지 않으므로 답변 옆에있는 오른쪽 표시를 클릭하여 문제를 해결하는 데 도움이 된 답변을 표시 할 수 있습니다. – codaddict