putchar() vs printf() - gibt es einen Unterschied?

Ich bin derzeit in Kapitel 1.5.1 Datei kopieren und aus einem Programm etwa so:

#include <stdio.h>

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

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

Wenn ich lief es so:

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

Die Ausgabe ist das, was ich Eingangs.

Und hier ist ein Programm, die ich für experimentelle Zwecke:

#include <stdio.h>

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

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

Er produziert das gleiche Ergebnis, aber gibt es einen Unterschied zwischen putchar und printf?

Was ist besser zwischen den 2?

  • printf("%c, c); und putchar(c); haben identisches Verhalten in diesem Beispiel.
  • printf("%c, c) und putchar(c) Funktion nur der Rückgabewert unterscheidet sich - und das ist in diesem Beispiel nicht verwendet. putchar(c) wird sicherlich schneller als printf("%c, c). Der Grad der Geschwindigkeit ist stark abhängig von vielen anderen Faktoren.
  • Warum Würde putchar schnell sein , und warum putchar_unlocked ist schneller?
  • Ein optimierender compiler kann emittieren den gleichen code für printf("%c, c) und putchar(c) und so keine performance-Unterschied in diesem Fall. Mit einem weniger intelligenten compiler putchar(c) mit seiner einfachen Funktionalität wäre sicherlich schneller als printf("%c, c), obwohl, ohne zu testen, den Grad der speed Unterschied ist unbekannt und kann marginal sein. putchar_unlocked() ist nicht ein standard-C-library-Funktion - ich bin nicht vertraut mit details.
InformationsquelleAutor | 2014-05-20
Schreibe einen Kommentar