Jump to content
Fórum Script Brasil
  • 0

Atividade


Question

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 to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148905
    • Total Posts
      644996
×
×
  • Create New...