getc  função

Protótipo

int getc (FILE * fluxo);

Descrição

Lê o caractere presente na posição atual do fluxo interno. Após a leitura, a posição atual é avançada para o próximo caractere.

A função fgetc é equivalente a esta, mas é implementada como uma função. A getc é implementada como um macro.

Parâmetros

fluxo - Ponteiro para um objeto FILE que será utilizado como entrada. Como getc é implementada como um macro, o fluxo deve ser uma expressão sem efeitos colaterais. Por exemplo, não é recomendável utilizar getc(fopen("arquivo.txt", "r")), pois isso pode causar múltiplas chamadas a função fopen (sem contar o fato de não ser possível fechar o arquivo aberto utilizando fclose, devido a não ser guardada uma referência).

Valor de retorno

Em caso de sucesso, a função retorna o caractere lido. O valor é retornado como um unsigned char convertido para um int.

Se o fluxo está no fim do arquivo ou um erro de leitura aconteceu, a função retorna EOF. As funções feof e ferror precisam ser utilizadas para distinguir entre um verdadeiro EOF ou um erro de leitura.

Exemplo
#include <stdio.h>

int main() {
    FILE* arquivo = fopen("arquivo.txt", "r");
    if(arquivo == NULL) {
        fprintf(stderr, "Erro ao abrir o arquivo.txt.");
        return 1;
    }

    int linhas = 0, espacos = 0;
    int caractere;
    do {
        caractere = getc(arquivo);
        
        if(caractere == ' ') {
            espacos++;
        } else if(caractere == '\n') {
            linhas++;
        }
    } while(caractere != EOF);
    printf("O arquivo possui %d espacos e %d linhas.\n", espacos, linhas);

    fclose(arquivo);

    return 0;
}