string replace인데 core가 발생하네요
글쓴이: bugger / 작성시간: 수, 2004/12/08 - 4:44오후
안녕하세요.
string replace 테스트를 하는데
프로그램이 죽습니다.
gdb로 실행시키면 죽지 않고 결과가 나오는데
쉘에서 실행시키면 core 발생하고 죽네요
자꾸 여기서 죽데요... 문법으로는 맞지 않나요?
*s = repl_chr;
---------- 원본 소스----------------------
#include <stdio.h>
#include <string.h>
int strreplace(char *s, char chr, char repl_chr)
{
int idx=0;
int count = 0;
if(*s=='\0' && s==NULL)
return -1;
for (; *s; s++)
if (*s == chr) {
*s = repl_chr; // ------> 이부분에서 세그먼트 falut가 발생합니다.
count++;
}
return count;
}
int main()
{
int num;
char *cp="string replace test ";
num=strreplace(cp,' ',',');
printf("a=%d, cp=%s\n",num,cp);
return 0;
}
Forums:
char *cp="string replace test "; 여기가
char *cp="string replace test ";
여기가 잘못되었습니다. cp가 가리키는 문자열은 변경할 수 없는 것인데 치환 함수 내에서
변경을 했기 때문입니다. 포인터가 아니라 배열로 선언하세요. 그러면 문자열이 배열로
복사되기 때문에 변경이 가능합니다.
char cp[]="string replace test ";
참고로 이런 실수를 방지하기 위해서 포인터로 쓸 때는
const char *cp="string replace test ";
로 하는 것이 좋습니다.
네 고맙습니다.
네 고맙습니다.
댓글 달기