This is in continuation of earlier blog on C language for beginners. In this particular blog, We will go through various printf options. Printing a message , on console , is one of the important aspect in programming. It helps in debugging boot loader, Kernel and user applications. You may find it with various names such as printf, printk, println etc. You might have already tried first “Hello World ! ” example for C programming.
Are you confused with printf options ?
Many students learn C++ during higher secondary which has cout() for printing messages on console. They find difficulty with printf options as compared to cout . I would like to go through a quick discussion followed by demo of important features.
Lets try to understand some basics behind the printf().
What one byte character can represent ?
- Non-Printable – ASCII code < 0x20
- Printable – ASCII code >=0x20 to <-0x7F
- 0x20 = Blank, 0x31=1 , 0x41=A , 0x61=a
- Extended – ASCII code >=0x80
Control Characters – All character 0x00 to 0x1F and 0x7F(DEL) are called control characters
The backslash \ is the special character used along with other characters to make a special command called Escape Sequence . For ex \n
CRLF(Carriage Return Line Feed) \r\n
Carriage Return is the terminology taken from old days typewriter where a moving carriage used to hold the paper. After completion of one line there was a mechanism to move back carriage to original place and that was called carriage return and the mechanism to move to next line called line feed.
In terms of today’s console, Carriage return (\r) in printf is used for moving cursor or print position to leftmost side and a new line character (\n) has been used to move cursor or print position to the beginning of next line. The term CRLF(Carriage Return Line Feed) is used for \r\n.
Other useful escape sequence options is horizontal tab(\t) . Support of these escape sequence commands depend on the library.
Why I don’t see any print message sometime on console ?
stdout is buffered stream . This buffer will be flushed with new line (\n) or fflush() or buffer stream close or normal exit of the program.
The stdin and stdout uses buffering to reduce system I/O call overhead :
- stdin and stdout(Terminal or TTY) – Line bufferred
- stdout (non terminal or non TTY) – Fully buffered
- stderr – unbuffered
Which printf options are frequently used ?
Lets go through demo at printf video to understand it better.
Thanks for reading till end. I am trying to improve usability of my site. Did you find this discussion helpful ? If so, Please subscribe to YouTube channel Embedkarias well for additional embedded related stuff.