Informática, perguntado por Usuário anônimo, 6 meses atrás

Exercício 3:

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.


Dica:

1. A função que converte minúscula para maiúscula é o toupper().

2. Como cada texto pode ter tamanho diferente, será necessário gravar antes de cada frase o tamanho do texto a ser lido. Logo serão necessários dois comandos de gravação e leitura (um para o número inteiro que indica a quantidade de caracteres da frase e outro para a frase com o tamanho lido).

Soluções para a tarefa

Respondido por financialassistantrj
10

Resposta:

#include <stdio.h>

#include<ctype.h>

#include <stdlib.h>

#include <string.h>

int main()

{

  FILE *farq;

  int i,j;

  char texto[50];

  char maiusc[50];

  char nomearq[20];

  int num;

  char c;

   printf("\n\nDigite o nome do arquivo a ser criado: ");

   scanf("%s", &nomearq);

   scanf("%c",&c);

   farq = fopen(nomearq, "w");

   if (farq == NULL) {

        fprintf(stderr,"fopen() failed in file %s at line # %d", __FILE__,__LINE__);

        exit(EXIT_FAILURE);

   }

   for (i=0; i < 2; i++){

     printf("\n\nDigite uma frase com 49 caracteres máximo: ");

     gets(texto);

     fflush(stdin);

      j=0;

       while ( texto[j] != '\0' && j < 49){

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

  farq = fopen(nomearq, "r");

   if (farq == NULL) {

        fprintf(stderr,"fopen() failed in file %s at line # %d", __FILE__,__LINE__);

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

}

Explicação:

Perguntas interessantes