7.6. getchar() and putchar()

getchar()
putchar()

In addition to scanf() and printf(), two additional input-output functions that are useful in some situations are getchar() and putchar().

Since char values are stored as an int, getchar() returns an int.

Here is an example that can read the standard input and write all capital letters to the standard output. The reason for calling fflush(stdout); is to force any characters that are still on the output buffer to display immediately.

#include <stdio.h>

int main(void)
{
    int c;

    while((c = getchar()) != EOF )
        putchar(toupper(c));

    fflush(stdout);
    return 0;
}

7.7. fgetc() and fputc()

fgetc()
fputc()

fgetc() and fputc(), work the same as getchar() and putchar() except they take an extra argument for an open file descriptor.

#include <stdio.h>

int main(void)
{
    FILE *rfp, *wfp;
    int c;

    if ((rfp = fopen("fileToRead", "r")) == NULL) {
        printf("Cannot open file to read");
        return 1;
    }
    if ((wfp = fopen("fileToWrite", "w")) == NULL) {
        printf("Cannot open file to write");
        return 1;
    }

    while((c = fgetc(rfp)) != EOF)
        fputc(c, wfp);

    fclose(rfp);
    fflush(wfp);
    fclose(wfp);
}