Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — Quadrix 2025

ProgramaçãoLinguagens de programação
Código
qg594697
Banca
Quadrix
Órgão
CFBio
Ano
2025
Nível
Superior
Cargo
Analista de Desenvolvimento
Em relação às metodologias de desenvolvimento de sistemas e às linguagens de programação utilizadas no desenvolvimento de sistemas, julgue o item seguinte.Na linguagem de programação C, feof() é um método da classe ifstream que tem como função fechar um arquivo.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Linguagem C: funções de arquivo e a confusão com C++

Gabarito: E — ERRADO. A afirmação está incorreta porque feof() é uma função da biblioteca padrão da linguagem C (declarada em <stdio.h>), utilizada para verificar se o fim do arquivo foi atingido — e não um método da classe ifstream, que pertence à C++ e tem como função fechar um arquivo. A banca misturou três conceitos distintos: a linguagem (C × C++), o tipo de elemento (função × método) e a finalidade (verificar fim de arquivo × fechar arquivo).

A linguagem C é uma linguagem estruturada e procedural, criada por Dennis Ritchie na década de 1970. Ela não possui classes, objetos ou métodos — esses conceitos pertencem ao paradigma de programação orientada a objetos, que foi incorporado à linguagem C++ (criada por Bjarne Stroustrup como uma extensão da C). Em C, o trabalho com arquivos é feito por meio de funções da biblioteca padrão, como fopen(), fclose(), fread(), fwrite(), fprintf(), fscanf() e feof(). Todas essas são funções livres, não métodos de nenhuma classe.

Já em C++, o trabalho com arquivos pode ser feito tanto pelas funções da biblioteca C (por compatibilidade) quanto pelas classes da biblioteca padrão de streams: ifstream (input file stream, para leitura), ofstream (output file stream, para escrita) e fstream (para leitura e escrita). Essas classes possuem métodos como open(), close(), read(), write(), eof(), entre outros. O método que fecha um arquivo em C++ é o close(), e o que verifica o fim do arquivo é o eof(). Note que feof() é uma função da C, enquanto eof() é um método da C++ — a semelhança dos nomes é uma armadilha clássica.

Vamos a um exemplo prático para fixar. Em C, para ler um arquivo até o fim, escrevemos:

#include <stdio.h>

int main() {
    FILE *fp = fopen("dados.txt", "r");
    if (fp == NULL) {
        printf("Erro ao abrir o arquivo\n");
        return 1;
    }
    char c;
    while (!feof(fp)) {  // função da C: verifica fim do arquivo
        c = fgetc(fp);
        if (c != EOF) putchar(c);
    }
    fclose(fp);  // função da C: fecha o arquivo
    return 0;
}

Em C++, o equivalente seria:

#include <fstream>
#include <iostream>

int main() {
    std::ifstream arquivo("dados.txt");
    if (!arquivo.is_open()) {
        std::cerr << "Erro ao abrir o arquivo\n";
        return 1;
    }
    char c;
    while (arquivo.get(c)) {  // lê até o fim
        std::cout << c;
    }
    arquivo.close();  // método da classe ifstream: fecha o arquivo
    return 0;
}

Perceba a diferença: em C, feof() é uma função que verifica se o fim do arquivo foi atingido; em C++, close() é um método da classe ifstream que fecha o arquivo. A afirmação do enunciado mistura tudo: diz que feof() é um método da classe ifstream (errado, é função da C) e que tem como função fechar um arquivo (errado, verifica fim de arquivo).

A pegadinha da banca é explorar a semelhança entre feof() (C) e eof() (C++), além de confundir função com método e verificação de fim de arquivo com fechamento. Para não cair, o candidato deve lembrar que:

  • C é procedural: usa funções como feof(), fclose().

  • C++ é orientada a objetos: usa classes como ifstream e métodos como eof(), close().

  • feof() verifica fim de arquivo; close() fecha o arquivo.

NÃO CAIA NESSA!

A banca troca a linguagem (C por C++), o tipo de elemento (função por método) e a finalidade (verificar fim de arquivo por fechar arquivo). O candidato que conhece superficialmente feof() pode até saber que ela tem a ver com arquivos, mas não percebe que ela é da C, não da C++, e que não fecha nada. Lembre-se: feof() = função da C para verificar fim de arquivo; close() = método da C++ para fechar arquivo.

Manipulação de arquivos
  • 1Linguagem C (procedural)
    • Funções livres
      • feof() — verifica fim do arquivo
      • fclose() — fecha o arquivo
  • 2Linguagem C++ (orientada a objetos)
    • Classe ifstream
      • eof() — verifica fim do arquivo
      • close() — fecha o arquivo
LEVEL · soulevel.com.br

Item — ❌ Errado

A afirmação está errada por três motivos: (1) feof() é uma função da biblioteca padrão da linguagem C, não um método da classe ifstream (que é da C++); (2) a função de feof() é verificar se o fim do arquivo foi atingido, não fechar o arquivo; (3) o fechamento de arquivo em C é feito pela função fclose(), e em C++ pelo método close(). Portanto, a assertiva está incorreta.

Gabarito: E — ERRADO.

Link permanente: /questoes/qg594697