Característica Solução em C Solução em C++
Lista Sequencial Implementada manualmente com array de structs e um contador. Utiliza std::vector, um contêiner dinâmico e seguro da STL.
Gerenciamento de Memória Estático. O tamanho máximo da lista é fixo (MAX_PESSOAS). Dinâmico. std::vector cresce conforme necessário, sem um limite pré-definido.
Leitura de Arquivo Usa FILE* e funções como fopen, fgets e sscanf. Usa std::ifstream (orientado a objetos), que é mais seguro e gerencia o recurso automaticamente (RAII).
Manipulação de Strings Utiliza char[] e funções da biblioteca <string.h>. Utiliza std::string, que é mais fácil e seguro de manipular.
Robustez Requer mais cuidado manual para evitar estouro de buffer e outros erros. Mais robusto devido ao uso de classes e contêineres da STL que abstraem a complexidade.
Os trabalhos devem ser em C ANSI

Exemplo Programa em C ANSI para ler um arquivo com dados no formato “Nome,RG”.

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_PESSOAS         50
#define TAMANHO_MAX_NOME    100
#define TAMANHO_MAX_RG_STR  15
#define TAMANHO_MAX_LINHA   128

typedef struct {
    char nome[TAMANHO_MAX_NOME];
    long int rg;
} Pessoa;

int carregarPessoas(Pessoa listaPessoas[], int tamanhoMaximo, const char *nomeArquivo) {
    
    FILE *ponteiroDoArquivo = fopen(nomeArquivo, "r");
    
    if (ponteiroDoArquivo == NULL) {
        perror("Erro ao abrir o arquivo");
        return 0;
    }

    char linha[TAMANHO_MAX_LINHA];
    int contador = 0;

    while (contador < tamanhoMaximo && fgets(linha, sizeof(linha), ponteiroDoArquivo)) {
        char nome_temp[TAMANHO_MAX_NOME];
        char rg_string_temp[TAMANHO_MAX_RG_STR];

        if (sscanf(linha, "%99[^,],%14s", nome_temp, rg_string_temp) == 2) {
            strcpy(listaPessoas[contador].nome, nome_temp);
            listaPessoas[contador].rg = atol(rg_string_temp);
            contador++;
        }
    }

    fclose(ponteiroDoArquivo);
    return contador;
}

void mostrarLista(const Pessoa listaPessoas[], int totalPessoas) {

     printf("--- Lista de Pessoas ---\n\n");
     if (totalPessoas == 0) {
        printf("Nenhuma pessoa para exibir.\n");
        return;
     }

     for (int i = 0; i < totalPessoas; i++) {
        printf("Nome: %s\n", listaPessoas[i].nome);
        printf("RG:   %ld\n", listaPessoas[i].rg);
        printf("-----------------------------------\n");
     }
}

int main() {
    Pessoa minhaLista[MAX_PESSOAS];
    
    int totalCarregado = carregarPessoas(minhaLista, MAX_PESSOAS, "dados_rg.txt");

    mostrarLista(minhaLista, totalCarregado);

    return 0;
}