2010-07-05 5 views
0

매크로를 사용하여 소문자를 대문자로 변환하는 작업이 주어졌습니다. 문제는 내가 매크로에 도입 된 적이 없다는 것입니다. 난 그냥 그 뭔가 #DEFINE 이름 크기가 .. 사람이 위키 백과 문서에 대한 C preprocessor - Macro definition and expansion 읽기이 문제매크로를 사용하여 대문자로 변환

+3

C 책을 읽으십시오. http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list –

+3

에 숙제가 있지만 매크로가있는 경우 매크로에 "도입 된 적이없는"클래스에서 무엇을하고 있었습니까? 강의 자료/강의 노트 또는 웨이크 업을 읽으십시오. 그것이'#define '이라고 생각하면이 임무를 수행 할 수 없습니다. 당신이 '아는'것은 잘못입니다. 또한 교사는 아마도 나쁜 프로그래밍 기술을 장려하는 숙제를 제공하지 않아야합니다. – Clifford

답변

5

는이 같은 것 할 수있는 가장 간단한 방법은 다음과 같이 다음

#define LOWERTOUPPER(x) ((x - 'a') + 'A') 

, 당신은이 기능을 사용합니다 :

character = LOWERTOUPPER('z'); 

유지하는 문자 변수 초래 이는 ' 지'.

-1

에 나를 인도 할 수주십시오 알고 (또는 다른 문서/C 튜토리얼 당신은 당신의 마음에 드는 검색 엔진 c macro을 검색하여 찾을 수 있습니다).

6

위의 대답은 글자가 아닌 내용도 변경합니다. 그것이 EBCDIC 문자 세트에 적합한되지 않을 것 또한

LOWERTOUPPER(*p++); 

로 호출하고 있다면 아마도 ... 그게 비록

#define LOWERTOUPPER(x) (('a' <= (x) && (x) <= 'z') ? ((x - 'a') + 'A') : (x)) 

문제를 줄 것이다. 이 모든 것이 잘못된 생각이라는 것을 증명하기위한 것입니다.

관련 문제