Faça um programa que leia o conteúdo de um arquivo e crie um arquivo com o mesmo conteúdo, mas com todas as letras minúsculas convertidas para maiúsculas. Os nomes dos arquivos serão fornecidos, via teclado, pelo usuário. A função que converte maiúscula para minúscula é o toupper(). Ela é aplicada em cada caractere da string.
Passo 1
O programa precisa ler dois nomes de arquivo (entrada e saída) e copiar todo o conteúdo do primeiro para o segundo, convertendo cada letra minúscula em maiúscula usando a função toupper(). O conteúdo aqui é leitura e escrita de arquivos em C e manipulação de caracteres.
Passo 2
Começamos incluindo as bibliotecas necessárias: <stdio.h> para I/O de arquivos, <stdlib.h> para exit e <ctype.h> para a função toupper().
Passo 3
Lemos, via teclado, o nome do arquivo de entrada e do arquivo de saída usando scanf() em buffers de tamanho suficiente e evitando overflow usando um limite de caracteres.
Passo 4
Abrimos o arquivo de entrada com fopen(nomeEntrada, “r”). Se fopen retornar NULL, exibimos uma mensagem de erro com perror() e encerramos o programa com código de erro.
Passo 5
Abrimos o arquivo de saída com fopen(nomeSaida, “w”). Se retornar NULL, fechamos o arquivo de entrada, mostramos erro e encerramos.
Passo 6
Usamos um laço while que faz fgetc(fin) até retornar EOF. Para cada caractere lido, aplicamos toupper© e escrevemos no arquivo de saída com fputc(). Isso converte todas as letras minúsculas em maiúsculas e deixa outros caracteres inalterados.
Passo 7
Após o loop, fechamos os dois arquivos com fclose() e retornamos 0 para indicar sucesso.
Resposta
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char nomeEntrada[256], nomeSaida[256];
FILE *fin, *fout;
int c;
char nomeEntrada[256], nomeSaida[256];
FILE *fin, *fout;
int c;
printf("Digite o nome do arquivo de entrada: ");
scanf("%255s", nomeEntrada);
printf("Digite o nome do arquivo de saída: ");
scanf("%255s", nomeSaida);
fin = fopen(nomeEntrada, "r");
if (fin == NULL) {
perror("Erro ao abrir o arquivo de entrada");
return 1;
}
fout = fopen(nomeSaida, "w");
if (fout == NULL) {
perror("Erro ao criar o arquivo de saída");
fclose(fin);
return 1;
}
while ((c = fgetc(fin)) != EOF) {
fputc(toupper(c), fout);
}
fclose(fin);
fclose(fout);
return 0;
}