Sample Video Frame

Created by Zed A. Shaw Updated 2024-11-15 13:50:32

Exercise 3: Formatted Printing

Keep that Makefile around since it'll help you spot errors, and we'll be adding to it when we need to automate more things.

Many programming languages use the C way of formatting output, so let's try it:

View Source file ex3.c Only

#include <stdio.h>

int main()
{
    int age = 10;
    int height = 72;

    printf("I am %d years old.\n", age);
    printf("I am %d inches tall.\n", height);

    return 0;
}

Once you've finished that, do the usual make ex3 to build and run it. Make sure you fix all warnings.

This exercise has a whole lot going on in a small amount of code, so let's break it down:

The result is giving printf some variables and it's constructing a new string and then printing it to the terminal.

What You Should See

When you do the whole build, you should see something like this:

View Source file ex3.sh-session Only

$ make ex3
cc -Wall -g    ex3.c   -o ex3
$ ./ex3
I am 10 years old.
I am 72 inches tall.
$

Pretty soon I'm going to stop telling you to run make and what the build looks like, so please make sure you're getting this right and that it's working.

External Research

In the Extra Credit section of each exercise, you may have you go find information on your own and figure things out. This is an important part of being a self-sufficient programmer. If you're constantly running to ask someone a question before trying to figure things out yourself, then you'll never learn how to solve problems independently. You'll never build confidence in your skills and will always need someone else around to do your work.

The way to break this habit is to force yourself to try to answer your own question first, and then confirm that your answer is right. You do this by trying to break things, experimenting with your answer, and doing your own research.

For this exercise, I want you to go online and find out all of the printf escape codes and format sequences. Escape codes are \n or \t that let you print a newline or tab, respectively. Format sequences are the %s or %d that let you print a string or integer. Find them all, learn how to modify them, and see what kind of "precisions" and widths you can do.

From now on, these kinds of tasks will be in the Extra Credit, and you should do them.

How to Break It

Try a few of these ways to break this program, which may or may not cause it to crash on your computer:

View Source file ex3.bad.sh-session Only

# edit ex3.c to break printf
$ make ex3
cc -Wall -g    ex3.c   -o ex3
ex3.c: In function 'main':
ex3.c:8: warning: too few arguments for format
ex3.c:5: warning: unused variable 'age'
$ ./ex3
I am -919092456 years old.
I am 72 inches tall.
# edit ex3.c again to fix printf, but don't init age
$ make ex3
cc -Wall -g    ex3.c   -o ex3
ex3.c: In function 'main':
ex3.c:8: warning: 'age' is used uninitialized in this function
$ ./ex3
I am 0 years old.
I am 72 inches tall.
$

Extra Credit

Previous Lesson Next Lesson

Register for Learn C the Hard Way

Register today for the course and get the all currently available videos and lessons, plus all future modules for no extra charge.