[완료]문자열 중간에 한 문자를 삽입하는 방법
글쓴이: dcmru / 작성시간: 수, 2007/02/07 - 9:51오후
소스를 짜보다가 정상적인 작동이 안되어 질문드립니다.
제목대로 문자열 중간에 한문자를 삽입하는 방법이 생각이 나질 않습니다.
예를 들어 문자열 "abcdefghijk" 가 있다면 중간에 'c' 다음에 'q' 를 삽입한다면
완성된 문자열은 "abcqdefghijk" 를 만드는 것입니다.
제가 생각한 소스는
removed라는 문자배열에 "abcdefghijk" 가 들어 있습니다.
sprintf(removed+(rc+1), "%s", removed+rc);
*(removed+rc) = 'q'; 인데
rc 는 카운트입니다.
위의 sprintf 로 출력해보면 문자열 내에는 "abcqqqqqqqqq"이 만들어집니다.
위의 소스는 뭐가 잘못된 것인지, 다른 좋은 방법이 있을까요?
Forums:
저런건 앞에서부터
저런건 앞에서부터 복사하게 될 경우 위에서 같은 문제가 생깁니다. 뒤에서부터 복사해야 되요 ;)
만약 removed 란 버퍼의 세 번째에 c 라는 변수에 들어있는 값을 삽입해넣을려고 한다면 아래와 같은 식으로 해야합니다. (버퍼는 충분한 크기로 할당되어있다는 전제하에)
아래와 같이 하면 코드는 조금 더 짧아지겠군요. ;)
-----------
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
memmove 를
memmove 를 쓰세요
memmove(removed+rc+1, removed+rc, strlen(removed) + 1 - rc);
*(removed+rc) = 'q';
#include <stdio.h>#include
한번 짜봤습니다.
--
foldl (flip (:)) [] "universe"
답변 감사드립니다
생각하지도 못한 방법들이 있었네요 ^^
간편한 memmove를 사용하는 것이 좋겠네요.
답변 감사합니다.
노력만이 살길이다.
노력만이 살길이다.
댓글 달기