[comp.sys.mac] C-tutor

kevin@pnet01.cts.com (Kevin Hill) (05/09/90)

#include <stdio.h>

        char            string[] = "Hello";

_main()
{
        int                     number = 65;
        char            letter = 'A';
        unsigned        number2 = 40000;
        
        
        
        printf("%.3s %7s\n %d %c %c %c\n %u %x %X\n ",string,string,number,
                                                               
number,letter,string[1],number2,number2);
}

/*the output:
        Hel   Hello
-->     ^^^ 1234567
        65 A A e
        40000 9c40 9C40
 As you can see, the %.3s causes only 3 characters of Hello to be printed.
 The %7s causes the 2nd Hello to be padded with 2 extra spaces. 5 for 
 the letters hello, and 2 blank spaces.  The --> is where I put
 my own text in.  Not the program.  %d prints 65 as you would expect
 but, interestingly enough, the %c tied to number prints an A.
 WHAT?
 But number is an integer, not a character.  Ahh, here's were C get's
 fun, C doesn't care that number is an integer, it just looks at the
 memory location were number stores its values and finds 65, the ascii
 code for A.  So it prints an A.  %c tied to letter prints an 'A' as
 expected.
 %c tied to string[1] prints an 'e'.  You probably thought it should
 have been an 'H' but string[0] = 'H'.  All of the arrays in C start
 with position zero.  Then the unsigned 40000, and then printed in
 hexidecimal. Lowercase x for lowercase hexidecimal alpha numbers. and
 an uppercase X to force the alpha-numbers to be capitals.
 
 Also, if you copy this letter, and put try it in Think C, it will work
 only if you change _main to main.  I have that change so that
 my program will create a file of the output for me.
 If you are curious how I did it, send me some mail and I will answer
 for you.
 
 Also,  You will notice that I have all of my numbers initialized to
 something.  If I had not done that then all of my output would
 have been random as in C, when you declare a variable it is
 not initialized.  It contains garbage.  You will notice that
 I declared 
 char string[] = "Hello";
 outside of the main() routine.  I did this because C dictates
 that to initialize a string like that you have to declare it as a
 global variable.  Don't ask me why, but I have to do it as the
 compiler dictates.  Try switching it to the inside of the function
 when you compile it and you will get an error.
 
 If anyone has any additions, please do so.
 If you have any questions, don't be afraid to ask, I'll try to 
 answer them as best I can.  Also, if you are asking a question,
 please post them to the conversation and don't e-mail them.
 If someone else knows the answer feel free to answer it.
 

 
 To create a new project in Think C.  First start the C application
 then hit the New button at the dialog.  Select the folder
 that you wish the project to reside in and then name and save
 it.  Go to the source menu, and select the Add item.
 Find the file MacTraps and select that.  After a second or two
 it will add it.  Now find the file named stdio, (      NOT STDIO.H)
 and add that.  Then type cancel after it is done with that.
 You should now be able to run the project with no problems!
 
 5-8-90
 pt.1.c
 */


UUCP: {hplabs!hp-sdd ucsd nosc}!crash!pnet01!kevin
ARPA: crash!pnet01!kevin@nosc.mil
INET: kevin@pnet01.cts.com
 
 ------------------------------------
 !  San Diego State University      !
 ------------------------------------