문자열 포인터 정의시 특수문자 삽입방법?

yarmini의 이미지

안녕하세요.

char *p = "ABCDEF";

이렇게 문자열 포인터를 선언시에 특수문자를 삽입할 수 있는 방법을 알고 싶습니다.

예를 들어

"\tABCDEF"

이렇게 하면 \t대신에 9라는 상수값이 들어가게 되잖아요.

이와 같은 방식으로 아스키코드값 0~32를 문자열 안에 넣고 싶어서요.

"\11" 이런 방식으로 해보았지만 상수값 11이 들어가지는 않더군요. 이렇게 하면 '\1' + '1'인지 '\11'인지 구별이 안가겠지만요..

(sprintf사용을 제외하고 초기 선언시입니다^^)

익명 사용자의 이미지

char *str = "\x00\x01\x02\xffabc";
\x뒤의 두개의 숫자는 16진 숫자입니다.

yarmini의 이미지

답변 감사합니다^^

Quote:
char *str = "\x00\x01\x02\xffabc";
\x뒤의 두개의 숫자는 16진 숫자입니다.

그런데 이렇게 해보니까 16진수 숫자입력이 가능한데요.

char *str = "\x12abc";

이렇게 하면 12abc까지 인식을 합니다.

"error C2022: '69923' : too big for character"

이렇게 에러가 나요.

언 제 나 멋 진

doldori의 이미지

\x 다음에 16진수로 인식하는 문자열은 2개가 아니라 16진수에 속하는 문자열까지입니다.
최대한 잘라먹기(maximum munch rule)와도 비슷하죠. 따라서 "\x12abc"는
'\x12', 'a', 'b', 'c', '\0'가 아니라 '\x12abc', '\0'가 되는 것입니다. 이 원칙에 따르면
"\x12kbc"는 '\x12', 'k', 'b', 'c', '\0'가 되는 것이고요.
의도대로 하시려면
char* str = "\x12" "abc";
와 같이 문자열을 분리하면 됩니다.