Copyright 2004 by M. Uli Kusterer Tue, 30 Dec 1969 07:58:58 GMT Comments on article book2 at Zathras.de http://www.zathras.de/angelweb/book2.htm book2 Comments witness_dot_of_dot_teachtext_at_gmx_dot_net (M. Uli Kusterer) witness_dot_of_dot_teachtext_at_gmx_dot_net (M. Uli Kusterer) en-us Comment 37 by Danilo http://www.masters-of-the-void.com/book2.htm#comment37 http://www.masters-of-the-void.com/book2.htm#comment37 If we tell to compiler than a, b, anc c are "Integer" (int a, b, c;) why later we must put "%d" or anything else?
Comment 36 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment36 http://www.masters-of-the-void.com/book2.htm#comment36 Uli Kusterer writes:
Eliot, numbers on the computer have a certain range. So if you go higher or lower than a certain number, you will get wrong results. For example, on your typical Mac, an "int" can hold numbers from a bit under -2 billion to a bit over 2 billion. (The numbers are very odd, because a computer internally uses bits to store a number in binary (base 2), and doesn't store them as base-10 like we humans do on paper, so there's no straight one-to-one mapping in number of digits.
Comment 35 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment35 http://www.masters-of-the-void.com/book2.htm#comment35 Uli Kusterer writes:
Saif, that should be fixed now.
Comment 34 by Eliot Slevin http://www.masters-of-the-void.com/book2.htm#comment34 http://www.masters-of-the-void.com/book2.htm#comment34 Im intrigued why of you enter a ridiculously value ten digits or over you get back such a weird age
Comment 33 by RedPill http://www.masters-of-the-void.com/book2.htm#comment33 http://www.masters-of-the-void.com/book2.htm#comment33 make sure to include stdio.h people!
Comment 32 by Saif Sajid http://www.masters-of-the-void.com/book2.htm#comment32 http://www.masters-of-the-void.com/book2.htm#comment32 This specific page of the tutorial doesn't show up properly. The page expands beyond the screen resolution. Here is a pic of the problem http://i45.tinypic.com/24zkxds.jpg See the scroll bars? I have to scroll around to see the whole thing. hope you fix it. Using a Macbook with 1200x800 resolution
Comment 31 by Wulf Massell http://www.masters-of-the-void.com/book2.htm#comment31 http://www.masters-of-the-void.com/book2.htm#comment31 I like your tutorials and would really enjoy seeing the movies. I run 10.6.3 on an Intel Mac and am unable to engage your animations. I have QuickTime Player 7.6.6 Pro, as well as QuickTime Player 10.0. I read that you created these using Keynote. That really interests me and I will distract myself towards creating animations to when I have completed all your tutorials. Thanks - Wulf
Comment 30 by James Ferner http://www.masters-of-the-void.com/book2.htm#comment30 http://www.masters-of-the-void.com/book2.htm#comment30 I just want to say how great this site is. I am a complete beginner to programming but just after two sessions I feel encouraged that I can learn. Thank you.
Comment 29 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment29 http://www.masters-of-the-void.com/book2.htm#comment29 Uli Kusterer writes:
BTW, see the chapter on error messages for more help on this and other errors: http://www.masters-of-the-void.com/book10.htm
Comment 28 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment28 http://www.masters-of-the-void.com/book2.htm#comment28 Uli Kusterer writes:
The error "Warning: Incompatible implicit declaration of built-in-function 'printf'" means you haven't included the <stdio.h> header, which is where printf() is declared. If you do not declare a function (or include a file that declares it), C just assumes it has certain parameters and return values.

This was useful in the old days, when C did not have declarations. However, declarations have the advantage that the C compiler can notice mistakes (e.g. if you pass parameters in the wrong order) and warn you when it compiles the file, instead of just crashing when you run your program.
Comment 27 by Max http://www.masters-of-the-void.com/book2.htm#comment27 http://www.masters-of-the-void.com/book2.htm#comment27 Same implicit issue...any ideas
Comment 26 by RowdyRocket http://www.masters-of-the-void.com/book2.htm#comment26 http://www.masters-of-the-void.com/book2.htm#comment26 As Christian mentioned above you have to use the return key, the enter key on your numeric keypad will cause it to do nothing.
Comment 25 by Raul http://www.masters-of-the-void.com/book2.htm#comment25 http://www.masters-of-the-void.com/book2.htm#comment25 Hello, hey I can't use the printf command in the line printf( "I am %d years...

It says: Warning: Incompatible implicit declaration of built-in-function 'printf'
Comment 24 by Garotas* http://www.masters-of-the-void.com/book2.htm#comment24 http://www.masters-of-the-void.com/book2.htm#comment24 Uli, couldn't you add some sound to the movies? I think they are amazing! they look pretty slick and make things really clear. I am surprised that you did them in Keynote!
Please, put some clicking sound on it, or let a computer voice read some text... (or the moose!). I thing that would be cool.
Comment 23 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment23 http://www.masters-of-the-void.com/book2.htm#comment23 Uli Kusterer writes:
Rob, that's all Keynote. See my blog posting at http://zathras.de/blog-abusing-keynote-for-animations.htm
Comment 22 by Rob http://www.masters-of-the-void.com/book2.htm#comment22 http://www.masters-of-the-void.com/book2.htm#comment22 Great stuff thanks very much....what did you do the graphic part of your quick time clip with?
Comment 21 by Charles Marshall http://www.masters-of-the-void.com/book2.htm#comment21 http://www.masters-of-the-void.com/book2.htm#comment21 This is a great tutorial and a great format for learning. The Comments section not only helps to answer my questions but I'm learning a lot by trying to answer other's before I read your reply! I've always thought learning what causes something to fail helps to reinforce the understanding of how it works. Great Job! Keep up the good work!
Comment 20 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment20 http://www.masters-of-the-void.com/book2.htm#comment20 Uli Kusterer writes:
Sam,

the format string is one long string as the first parameter, not three short ones as the first three parameters, so this should be:

printf( "a = %d, b = %d, c = %d", a, b, c );

If you add extra quotes, that means the commas are seen as parameter separators, not as punctuation used inside the text.
Comment 19 by sam http://www.masters-of-the-void.com/book2.htm#comment19 http://www.masters-of-the-void.com/book2.htm#comment19 Hey there,

Great tutorial but one slight issue, when I have these lines of code in xcode, I get the following warning:
a = b = c = 23;
printf("a = %d", "b = %d", "c = %d",a,b,c);

warning: format '%d' expects type 'int', but argument 2 has type 'char *'

When I run these lines I get this output: a = 3919
Comment 18 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment18 http://www.masters-of-the-void.com/book2.htm#comment18 Uli Kusterer writes:
MO, one more note: If you want to get text from the user, proceed with this tutorial. We will eventually get around to explaining how to declare a variable that can hold text, and will write a program that lets you type in text.
Comment 17 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment17 http://www.masters-of-the-void.com/book2.htm#comment17 Uli Kusterer writes:
kevin, Can you post your code here? My guess is something is wrong with your scanf() line.
Comment 16 by kevin http://www.masters-of-the-void.com/book2.htm#comment16 http://www.masters-of-the-void.com/book2.htm#comment16 i wrote my program the exact way it is shown here and in the console when i run the program the line saying enter your age appears and i enter a number then press return but nothing happens. only when i type q to quit then press return does the line you are blank years old appear. help?

Comment 15 by jagdish kapkoti http://www.masters-of-the-void.com/book2.htm#comment15 http://www.masters-of-the-void.com/book2.htm#comment15 superb article,u r the only website which provides such text which is mac specific
Comment 14 by Christian http://www.masters-of-the-void.com/book2.htm#comment14 http://www.masters-of-the-void.com/book2.htm#comment14 Thank you Uli,

I figured it out. I was also pressing enter on the number pad rather than return on the main keyboard to move the program along.

Thanks for the quick reply.
Comment 13 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment13 http://www.masters-of-the-void.com/book2.htm#comment13 Uli Kusterer writes:
Jaxerell, fpurge() is not always needed. The issue is that on some versions of Mac OS and Linux you would need to use this command, while newer versions of Mac OS for example don't need it anymore. But according to the ANSI standard, you have to use fpurge() in this context, so I thought I'd be better safe than sorry.
Comment 12 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment12 http://www.masters-of-the-void.com/book2.htm#comment12 Uli Kusterer writes:
Andrew, where the application goes depends on various factors (settings specified in the project and in Xcode's preferences). In a bog-standard Xcode setup, you should see the executable in a "build" folder next to your project file. Usually it is in a "Debug" or "Release" folder in there. Alternately, you can double-click the icon for the generated application in the little brown "Products" folder in the Groups & Files list of your project window to launch it with Terminal.
Comment 11 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment11 http://www.masters-of-the-void.com/book2.htm#comment11 Uli Kusterer writes:
Christian, you probably didn't open the "Console" window: Choose "Console" from the "Run" menu and you will have a window with your text. Your program was happily running, you just didn't see it. Hence the error message about having to stop the running program before you can start it again.
Comment 10 by Christian http://www.masters-of-the-void.com/book2.htm#comment10 http://www.masters-of-the-void.com/book2.htm#comment10 Hello, I am not able to get the second part to run.

scanf( "%d" , &userInput );
fpurge( stdin );

printf( "You are %d years old.\n", userInput );
return 0;

Once I input my age and hit return nothing happens.
Also when I hit build and go a screen pops open and says stop executable... i click ok to continue building and then it runs but I am not sure why it pops open with that warning. It did not do it for the previous programs.

Xcod v3.13

Thanks

Christian
Comment 9 by Andrew Hobson http://www.masters-of-the-void.com/book2.htm#comment9 http://www.masters-of-the-void.com/book2.htm#comment9 Once I compile the project, if I want to quit Xcode and run the program from the "real" MacOS X Terminal, what mst I do?
Where is the final program stored?
How can I execute it?
Comment 8 by Jaxerell http://www.masters-of-the-void.com/book2.htm#comment8 http://www.masters-of-the-void.com/book2.htm#comment8 I had the same problem/error as Lindsay, with stdin, so I just took the line out, the whole fpurge line.

It worked with a plain number, and when I entered a number AND text, it ignored the text and just used the number. This is what you said that fpurge does, yet it did it without the line.
Comment 7 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment7 http://www.masters-of-the-void.com/book2.htm#comment7 Uli Kusterer writes:
zach, that Terminal display is where you enter stuff in Xcode to get it into your running program.

To actually write a graphical user interface, you need to do some additional work (usually involving the use of the Objective C programming language and Cocoa framework). It's just that this would exceed the scope of this tutorial, so I stuck with the Terminal-esque text input/output calls to keep things simple.

But that Terminal-like window Xcode opens should be enough for most uses until you're familiar with C and want to move on to Objective C.
Comment 6 by zach http://www.masters-of-the-void.com/book2.htm#comment6 http://www.masters-of-the-void.com/book2.htm#comment6 Let's say I code something where the user can input three numbers, and the c code can calculate them together. Does XCode run this code and open up a little space where the user can input the numbers? I ask this because each time I run my simple c code, it opens a Terminal-esque display. Do I have to run a different compiler if I am writing software c code where the user will need to input data and interact with my software?

Sorry, brand new to c, willing to learn. Just downloaded Xcode, but not sure past the point of the Console running my code in a Terminal like display format.
Comment 5 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment5 http://www.masters-of-the-void.com/book2.htm#comment5 Uli Kusterer writes:
You are using "%s" to tell scanf() to expect a string of text, but then you give it a variable that is declared as an int (which is an integer number). That can't work.
Comment 4 by MO http://www.masters-of-the-void.com/book2.htm#comment4 http://www.masters-of-the-void.com/book2.htm#comment4 I want to write a program to for his/her name, and this what I did:

#include <stdio.h>

int main()
{
int userName;

printf("Please enter your name:");

scanf("%s", &userName);
fpurge(stdin);

printf("\nYour name is %s \n", userName);

return 0;
}

but when I run it, this what happen:

Please enter your name:mohammed

[Session started at 2009-05-14 15:52:09 -0600.]
Loading program into debugger…
GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".Program loaded.
sharedlibrary apply-load-rules all
Attaching to program: `/Users/grey_falkon2003/Documents/first project revised/build/Debug/first project revised', process 894.
kill

The Debugger Debugger is attaching to process

*** I don't know whats wrong!!
Comment 3 by Gaby J http://www.masters-of-the-void.com/book2.htm#comment3 http://www.masters-of-the-void.com/book2.htm#comment3 Hey, I'm starting a project (developing an iPhone app), and I need to learn C first. You guys are one of the only sites that teaches this in "Mac terms", and it's great. Thanks!!!
Comment 2 by Uli Kusterer http://www.masters-of-the-void.com/book2.htm#comment2 http://www.masters-of-the-void.com/book2.htm#comment2 Uli Kusterer writes:
Lindsay, have you checked that all the #include statements are in your code? If you leave one of them out, that will cause the error you mention.
Comment 1 by Lindsay Cripps http://www.masters-of-the-void.com/book2.htm#comment1 http://www.masters-of-the-void.com/book2.htm#comment1 Great tutorial.

I'm getting an error coming up along side - fpurge( stdin );

error: 'stdin' undeclared (first use in this function)

Latest 3.1 version of Xcode