Right Trim 구현중 질문입니다.

k2sguard의 이미지

아직 미흡한 실력에 이 부분 하나로 너무 끙끙거리고 안되어서... 질문 올립니다

먼저 소스

char *source = "ABCDE     ";
char *end;
end = source + strlen(source);
 
printf("-----1-----\n");
 
while(isspace(*--end));
 
printf("-----2-----\n");
 
*(end + 1) = '\0';
 
printf("-----3-----\n");
 
printf("%s\n, source);

right trim 구현 부분인데요

컼파일 후 실행을 해보면 테스트로 표시한 -----3-----부분으로 넘어가지를

않습니다. -----2----- 까지만 출력이 되고 종료가 되어 버리네요

*(end + 1) = '\0'; <--- 이부분이 에러나는 소리 인데....

도대체 저 구문이 무엇이 문제인지를 도통 모르겠습니다.

답변 부탁드리겠습니다 감사합니다.

yhsuk의 이미지

문자열 상수를 수정해서 나는 에러입니다~

char *source = "ABCDE     "; // source포인터가 문자열 상수의 시작 주소값을 가리킵니다.
char source[] = "ABCDE     "; // source에 문자열 길이 + 1만큼 char 배열을 확보하고 문자열 상수를 복사합니다.

http://kldp.org/node/49150

링크도 참조해 보세요.

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"

k2sguard의 이미지

덕분에 해결되었습니다. 정말 감사합니다.