2011-05-12 4 views
7

탈출 포함의 char *에서 문자를 만듭니다고려 캐릭터에게 다음과 같은 문자 * 예를

char* s = "\n"; 

이는 새 라인 문자과 같이 나타내는 단일 문자로 변환 할 수있는 방법 :

char c = '\n'; 

개행을 처리하는 것 외에도 이스케이프 문자가있는 문자를 문자로 변환 할 수 있어야합니다. 이것이 어떻게 가능한지?

+6

'숯불 C = * s; 작동합니다. 문자열 안의''\ n ''은 소스 형식의 두 글자 밖에 없습니다 : 컴파일 한 후에는 단일 문자입니다. 다른 모든 이스케이프 문자에도 동일합니다. ''fo \ 111 \ tar "'문자열은 컴파일 후에 7 자 (소스 코드에서 볼 수있는 6 자 및 널 종결 자)입니다. – pmg

+2

@pmg - 답변이 아니라 덧글을 게시 해주세요! – JonH

+0

@ pmg : JonH가 맞습니다. 그것을 게시 – Heisenbug

답변

9

char c = *s; 작품.

문자열 안에있는 '\n'은 소스 형식으로 2 자입니다. 컴파일 한 후 단일 문자입니다. 다른 모든 이스케이프 문자에도 동일합니다.

문자열 "fo\111\tar"은 컴파일 후에 7 자 (소스 코드 (6에서 볼을 'f', 'o', '\111', '\t', 'a''r') 및 null 터미네이터)이있다.

+0

+1 - 그렇게 말한 :-p – JonH

+0

그래, 맞아. 고마워요 @JonH :) – pmg

+0

환상적, 고마워요. @pmg. – AgileVortex

1

그런 뜻입니까? 그것은 역 참조

char * s = "\n"; 
char c = *s; 
3

:

char* s = "\n"; 
char c = *s; 
2

다른 말로, 개행 문자는 실제로 메모리의 한 문자뿐입니다. 이 배열 인 것처럼 문자열 포인터에서 하나의 문자를 얻으려면, 당신은 포인터를 액세스 할 수 있습니다 (물론, 가정 문자열에 할당 된 메모리가 있는지가에 지적) :

char* s = "\n"; 
char c = s[0]; 
관련 문제