2009-11-22 3 views
1

저는 char에 대한 포인터 인 포인터 (* ascii)를 가지고 있습니다. if로 만들려면 int로 값을 지정하고 싶습니다. 이 작동하지 않는C에서 int에 대한 포인터를 캐스팅하는 방법 (ascii 값 얻기)

if (ascii == 32 || ((ascii > 96) && (ascii < 123)) { 

} 

같은 문장은, 난 당신이에서 지적되고있는 포인터 (메모리 주소)이 아닌 물건의 값의 값을 확인하고 있기 때문에 귀하의 코드가 작동하지 않는

답변

8

도움 부탁드립니다 . 포인터가 주소라는 것을 기억하십시오. 역 참조을 사용하면 그 주소에서 값을 얻을 수 있습니다.

일단 역 참조, 당신은 단순히 그 값에 문자 유형과의 비교를 수행 할 수 있습니다

char ascii_char = *ascii; 

if (ascii_char == 32 || ((ascii_char > 96) && (ascii_char < 123)) 
{ 

} 
+4

초보자 가이드 다음 포인터는 당신의 손가락입니다. 문자는 달입니다. 두 개를 혼동하지 마십시오 ;-) –

3

그냥

if (*ascii == 32 || ((*ascii > 96) && (*ascii < 123)) { 

} 

하거나 다른 변수에 할당 변수 이름 앞에 *를 넣어 나는이 트릭을 할 것입니다 생각 대신

int a = *ascii 
if (a == 32 || ((a > 96) && (a < 123)) { 

} 
+0

답을 게시 해 주셔서 감사합니다. – c2009l123

0

를 사용

int asciiNum = (int)*ascii; 
0

당신은 단지 첫 번째 문자하지만 숫자로 char 배열을 변환 한 후 비교 atoi 함수() 함수를 사용하는 ASCII 포인터에 저장된 수를 비교를 참조하지 않는 경우.

+0

atoi가 비표준이 아닙니까? –

+0

아니요 표준 C 라이브러리 libc의 일부입니다 –

+0

비표준 itoa입니다. 또한 SGI STL의 std :: iota는 표준 C++가 아닙니다. 둘은 쉽게 타이핑됩니다. –

1

왜 ASCII 값을 사용합니까?

더 읽기 방법이 될 것이다 다음은

숯불 ascii_char = * 아스키;

경우 (ascii_char == '|| ((ascii_char> ='A ') & & (ascii_char < ='Z '))

{

}

관련 문제