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;
}