2013-01-08 2 views
0

사람은 프로그램이 갑자기 종료이예기치 않은 출력 (포인터)

#include <stdio.h> 
void modify (char*s,int x,int y) 
{ 
    s[x]=s[y]; 
} 
main() 
{ 
    char* s = "random"; 
    modify(s,1,2); 
} 

에서 오류를 지적 없습니다. 나는 이것이 매우 쉬운 질문 일지 모르지만 나는 c를 처음 접한다. 감사합니다.

+0

제가 입력하면 '의 printf ("\ n 개의 %의 ​​C"들 [X]);' 프로그램이 제대로 작동합니다. –

+0

무엇이 필요합니까? 코드가 끝나면 프로그램이 끝납니다. 당신이 게시 한 것은 아무것도하지 않는 프로그램입니다. –

답변

6

modify에 할당 중에 충돌이 발생했기 때문입니다. 그 이유는 포인터가 수정 불가능한 상수 문자열을 가리키고 있기 때문입니다. 당신이 문자열을 수정하려면

대신 배열로 선언 할 수 있습니다 : 그것 뿐이다

char s[] = "random"; 
0

합니다. 한 번 같은 문제가있었습니다. 함께

char *s = "random"; 

한 다음 :이 광고를 교체한다

char s[] = "random";