C에서 사용하는 특수기호(\n,\t 등)을 출력 할려고 합니다
글쓴이: blackap / 작성시간: 금, 2012/05/04 - 3:49오후
printf나 sprint, puts 등을 이용해서 캐릭터형 포인터 문자열을 출력 하려 하는데
해당 문자열에 \t, \n등이 들어가 있습니다
물론 \\t나 \\n등으로 입력하면 해결 된다는걸 알지만 네트워크쪽으로 물려 있어서 \\ 형식으로 바꾸지는 못합니다
캐릭터형 변수 이기 때문에 1 대 1로 불러와서 검사하는 루틴을 생각 해 봤으나
왠일인지 unreachable code라고 나와서 해보지는 못했습니다
혹시 특수기호를 출력해 주는 함수나 우회해서 출력하는 방법이 있을까요?
현재는 sprint로 출력해야 할 값을 다 불러오고 printf로 하나씩 다시 출력 하고 있습니다
db에는 정상적으로 저장/출력 됩니다
Forums:
정확한 상황을 알 수 없지만..
혹시 //t 말고 ////t 나 ////////t 으로 시도해보셨나요?
"네트워크쪽에 물렸다"는게 정확히 어떤 구조인지 모르겠습니다만,
제 경험상 여러 레이어를 (예 : DB -> PHP -> AJAX) 거칠 경우에
레이어 단계에 비례해서 escape 문자를 2배 늘려서 해결한 적이 있었습니다.
......
1. ascii에서 문자의 범위에서 벗어나는 (0x00~0x1F, 0xFF) 문자들의 갯수를 체크하고
2. char *new_string = malloc((strlen(old) - 갯수) + (갯수 * 4)) * sizeof(char));
3. 첫번째 바이트부터 마지막 바이트 까지 탐색하여 복사하는데 0x00 ~ 0x1F, 0xFF 는 [NUL] [TAB] [ESC] [DEL] 등으로 잘 치환하도록.... 하시고.. 물론 마지막 \0은 처리 하지 않구요.
4. print new_string
5. free new_string
댓글 달기