Faça um programa, em linguagem C, que lê 5 frases, informadas pelo o usuário, de, no máximo, 50 caracteres cada uma e armazene-as em um arquivo. Mas, antes de gravar cada frase no arquivo, é necessário converter todas as suas letras para maiúsculas. O nome do arquivo será fornecido, via teclado, pelo usuário. A seguir, feche o arquivo. Reabra o arquivo, para leitura, exibindo na tela todas as frases convertidas.
Estou com problema no primeiro fgets, sempre que rodo estora um erro que não sei como arrumar, podem me ajudar?
Pergunta
Nicolas Tatico
Preciso de ajudar nessa atividade.
Faça um programa, em linguagem C, que lê 5 frases, informadas pelo o usuário, de, no máximo, 50 caracteres cada uma e armazene-as em um arquivo. Mas, antes de gravar cada frase no arquivo, é necessário converter todas as suas letras para maiúsculas. O nome do arquivo será fornecido, via teclado, pelo usuário. A seguir, feche o arquivo. Reabra o arquivo, para leitura, exibindo na tela todas as frases convertidas.
Estou com problema no primeiro fgets, sempre que rodo estora um erro que não sei como arrumar, podem me ajudar?
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <wchar.h>
int main()
{
FILE*farq;
int i, j;
char texto[51];
char maiusc[51];
char nomearq[20];
int num;
errno_t err;
printf("\n\nDigite o nome do arquivo a ser criado: ");
scanf_s("%c", &nomearq);
err = fopen_s(&farq, nomearq, "w");
//verifica o arquivo se igual a vazio
if (err == NULL) {
fprintf(stderr, "Erro ao abrir o arquivo!");
exit(EXIT_FAILURE);
}
//contador das frases
for (i = 0; i < 6; i++) {
printf("\n\nDigite uma frase com 50 caracteres máximo: ");
scanf_s("%c", &texto);
if(fgets(texto, sizeof(texto), farq) != NULL); {
puts(texto);
}
j = 0;
while (texto[j] != '\0' && j < 50) {
maiusc[j] = toupper(texto[j]); // converte os caracteres para maiúscula
j++;
}
maiusc[j] = '\0';
fwrite(&num, sizeof(int), 1, farq); //Grava o tamanho do texto
fwrite(maiusc, sizeof(char), num, farq); //Grava o texto
}
fclose(farq);
err = fopen_s(&farq, nomearq, "r");
if (err == NULL) {
fprintf(stderr, "Erro ao abrir o arquivo!");;
exit(EXIT_FAILURE);
}
fread(&num, sizeof(int), 1, farq); // lê o tamanho do texto
fread(texto, sizeof(char), num, farq); // lê o texto gravado
while (!feof(farq)) {
printf("\n\nTexto Lido: %s", texto);
memset(texto, '\0', 50);
fread(&num, sizeof(int), 1, farq); // lê o tamanho do texto
fread(texto, sizeof(char), num, farq); // lê o texto gravado
}
fclose(farq);
system("pause");
return 0;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.