2010-07-05 33 views
0

我已經給出了一個使用宏將小寫字符變成大寫的任務。問題是我從來沒有被引入宏。我只知道它的東西#定義名稱大小..請任何人都可以指導我在這個問題上使用宏轉換爲大寫

+3

閱讀C上的書 - 有一個列表在http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list – 2010-07-05 10:21:07

+3

如果功課是在宏,但你有從未被「引入」宏,你在課堂上做了什麼?閱讀課程材料/講義或喚醒。認爲它是'#define '不會讓你遠離這個任務;你「知道」的是錯誤的。此外,你的導師應該不要給你作業,只是鼓勵糟糕的編程技巧。 – Clifford 2010-07-05 12:50:16

回答

5

這樣做會是這樣簡單的方法:

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

然後,你會像如下使用這個函數:

character = LOWERTOUPPER('z'); 

這將導致字符變量拿着「 Z」。

6

上面的答案也會改變那些不是字母的東西。也許......如果它被援引作爲

LOWERTOUPPER(*p++); 

,也不會是正確的EBCDIC字符集

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

儘管這會給麻煩。所有這些都證明這種事情是一個壞主意。