0

I have been given a task to covert lower case character into upper case by using macros .the problem is that i have never been introduced to macros. i just know that its something #define name size .. please can anyone guide me on this issue

  • 3
    Read a book on C - there is a list at http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list –  Jul 05 '10 at 10:21
  • 3
    If the homework is on macros, but you have never been "introduced" to macros, what were you doing in class? Read your course material/lecture notes or wakeup. Thinking that it is `#define ` is not going to get you far in this assignment; what you 'know' is wrong. Also your tutor should probably refrain from giving you homework that simply encourages bad programming technique. – Clifford Jul 05 '10 at 12:50

2 Answers2

7

The answer above would also change things that aren't letters. Perhaps...

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

although that would give trouble if it were invoked as

LOWERTOUPPER(*p++);

and also wouldn't be right for the EBCDIC character set. All of which goes to prove that this sort of thing is a Bad Idea.

Brian Hooper
  • 21,544
  • 24
  • 88
  • 139
5

The simplest way to do this would be something like this:

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

Then, you would use this function like follows:

character = LOWERTOUPPER('z');

Which would result in the character variable holding a 'Z'.

Toast
  • 356
  • 1
  • 2
  • 8