Escreva um programa que leia a profissão e o tempo de serviço (em anos) de cada um dos 5 funcionários de uma empresa e armazene-os no arquivo “emp.txt”. Cada linha do arquivo corresponde aos dados de um funcionário. Utilize o comando fprintf(). Em seguida, leia o mesmo arquivo utilizando fscanf(). Apresente os dados na tela.
Passo 1
O enunciado pede um programa em C que leia a profissão (string) e o tempo de serviço (inteiro) de 5 funcionários, grave esses dados no arquivo “emp.txt” usando fprintf(), depois reabra o mesmo arquivo, leia com fscanf() e exiba na tela. O conteúdo envolve manipulação de arquivos em C (fopen, fprintf, fscanf, fclose) e leitura de strings e inteiros.
Passo 2
Incluímos o cabeçalho <stdio.h> e declaramos: uma matriz de char para armazenar a profissão (por exemplo, char profissao[50]😉, um inteiro para o tempo de serviço (int tempo;), um FILE * para manipular o arquivo e um laço de repetição para percorrer os 5 funcionários.
Passo 3
Abrimos o arquivo em modo escrita com fopen(“emp.txt”, “w”), verificamos se o ponteiro não é NULL. Em seguida, num for de 0 a 4, pedimos ao usuário para digitar a profissão (usando scanf("%49s", profissao)) e o tempo de serviço (scanf("%d", &tempo)), e gravamos no arquivo com fprintf(fp, “%s %d\n”, profissao, tempo). Após o loop, fechamos o arquivo com fclose(fp).
Passo 4
Reabrimos o arquivo em modo leitura com fopen(“emp.txt”, “r”), verificamos novamente se o ponteiro não é NULL. Em seguida, usamos outro laço (por exemplo, for de 0 a 4 ou while(fscanf(fp, “%49s %d”, profissao, &tempo)==2)) para ler cada par profissão/tempo com fscanf(fp, “%49s %d”, profissao, &tempo) e imediatamente exibí-los na tela com printf(“Profissão: %s, Tempo de serviço: %d anos\n”, profissao, tempo).
Passo 5
Por fim, fechamos o arquivo com fclose(fp) e retornamos 0 no main().
Resposta
#include <stdio.h>
int main() {
char profissao[50];
int tempo;
FILE *fp;
int i;
char profissao[50];
int tempo;
FILE *fp;
int i;
// Gravação dos dados no arquivo emp.txt
fp = fopen("emp.txt", "w");
if (fp == NULL) {
perror("Erro ao abrir emp.txt para escrita");
return 1;
}
for (i = 0; i < 5; i++) {
printf("Digite a profissao do funcionario %d: ", i+1);
scanf("%49s", profissao);
printf("Digite o tempo de servico (em anos): ");
scanf("%d", &tempo);
fprintf(fp, "%s %d\n", profissao, tempo);
}
fclose(fp);
// Leitura dos dados do arquivo emp.txt
fp = fopen("emp.txt", "r");
if (fp == NULL) {
perror("Erro ao abrir emp.txt para leitura");
return 1;
}
printf("\nDados lidos do arquivo:\n");
while (fscanf(fp, "%49s %d", profissao, &tempo) == 2) {
printf("Profissao: %s, Tempo de servico: %d anos\n", profissao, tempo);
}
fclose(fp);
return 0;
}