Ir para conteúdo
Fórum Script Brasil
  • 0

Atividade


Nicolas Tatico

Pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...