user3649506
user3649506

Reputation:

putchar() vs printf() - Is there a difference?

I am currently in chapter 1.5.1 File copying and made a program like so:

#include <stdio.h>

/* copy input to output; 1st version */
main()
{
    int c;

    c = getchar();
    while (c != EOF) {
        putchar(c);
        c = getchar();
    }
}

If I ran it like this:

PS <..loc..> cc copy-0.c
PS ./a
Black
Black
White
White
Gray
Gray

The output is what I input.

And here's a program I made for experimental purposes:

#include <stdio.h>

/* copy input to output; 1st version */
main()
{
    int c;

    c = getchar();
    while (c != EOF) {
        printf("%c",c);
        c = getchar();
    }
}

It produces the same result but is there a difference between putchar and printf?

Which is better to use between the 2?

Upvotes: 19

Views: 36078

Answers (5)

user5181136
user5181136

Reputation: 121

I compiled an example using printf("a") with -S and got call putchar in the assembly code.

Looks like when you have only one char in the printf the compiler turns it into a putchar().

I did another example using printf("ab") and got call printf, with the text section in the %edi register.

Upvotes: 12

Tommy Ivarsson
Tommy Ivarsson

Reputation: 605

The difference is that putchar prints one character whereas printf can print a lot more.

printf("%s\n", "this is a lot longer than one character");

Generally when you print something to the terminal you want to end it with a newline character, '\n'. At the very least for that reason I would suggest using printf as then you can write

printf("%c\n", c);

instead of

putchar(c);
putchar('\n');

Upvotes: 2

kirbyfan64sos
kirbyfan64sos

Reputation: 10727

printf is a generic printing function that works with 100 different format specifiers and prints the proper result string. putchar, well, puts a character to the screen. That also means that it's probably much faster.

Back to the question: use putchar to print a single character. Again, it's probably much faster.

Upvotes: 37

user3016508
user3016508

Reputation:

  1. Putchar : prints only a single character on the screen as the syntax tells.
  2. Printf : printf line or word on the screen. Hence when you want to display only one character on the screen the use putchar. To read a string use gets function. To display string you can use puts() or printf both.

Upvotes: 1

ajbee
ajbee

Reputation: 3641

printf lets you format strings in a complicated way, substituting things like integers and floats and other strings.

getchar and putchar get and put characters

I can say that printf is more useful in more ways compared to putchar.

Better look in their respective manual pages ( man 3 printf man 3 putchar ) in terminal

Upvotes: 0

Related Questions