Ir ao conteúdo

Posts recomendados

Postado

Olá pessoas, acabei tendo dificuldades em representar o programa que tem de ter arquivo e mostrar na tela o conteúdo do texto e em seguida mostrar ele em maiúsculo, por gentileza se puderem fazer as alterações necessárias pra uma melhor compreensão eu ficaria grato.  

 

 

 
#include <stdio.h>  
#include <stdlib.h>
int main(void)
{
 FILE *fptr;  
 short int ch  ;
 
 if ((fptr = fopen("arqtext.txt","r")) == NULL)

 { puts(" Nao foi possivel abrir o arquivo");
 system("pause");
}
 while (( ch = fgetc(fptr)) != EOF)  
 printf(" %c",ch);  

    printf(" em maiusculo : %s",strupr(ch));

 fclose(fptr);

 return 0;
  }

Postado

@907467

33 minutos atrás, 907467 disse:

puts(" Nao foi possivel abrir o arquivo");

image.png.6c4e4d9f78c893fefd11ae38da6c44d2.png

Chame perror() para obter mais detalhes:

perror("Nao foi possivel abrir o arquivo");
return 1;

image.png.24591d446e87d86d844c71ae90ee9fec.png

 

41 minutos atrás, 907467 disse:

while (( ch = fgetc(fptr)) != EOF)  
    printf(" %c",ch);  

printf(" em maiusculo : %s",strupr(ch));

O que espera obter com isso?

Se quer imprimir caractere por caractere, vai precisar de 2 loops: o primeiro para imprimir o conteúdo normal, e o segundo para imprimir as letras maiúsculas.

O primeiro você já fez...

while ((ch = fgetc(fptr)) != EOF){
    printf("%c", ch);
}

Chamamos então rewind() para levar o indicador de posição do fluxo para a posição inicial:

rewind(fptr);
putchar('\n');

Dessa forma, podemos criar o segundo loop. Precisamos dar uma olhada na tabela ASCII:

image.png.272499fa3a2dc2fdea3e586e597ea16f.png

Percebe que os caracteres são representados por um decimal? O caractere 'a' é representado pelo número 97, o 'A' é representado pelo número 65, então 'a' - 'A' = 32, e 'A' - 'a' = -32, certo?

Concorda comigo que se caractere >= 97 e caractere <= 122, ele é uma letra minúscula? Então se ele for minúsculo, precisamos somar ('A' - 'a') à ele, por exemplo, 'b' + ('A' - 'a') = 66 = 'B', logo ele se torna maiúsculo.

Basta criar um loop igual o que havia criado anteriormente e fazer essa verificação :)

  • Curtir 1
Postado

@907467    você pode usar a função

#include <ctype.h>
printf("%c",toupper(ch);  

  para passar as letras para maiúsculas ,  e depois de escrever as letras do arquivo em minúsculas ,  ´para escrever elas em maiúsculas precisa voltar ao início do arquivo , e para isso você pode usar a função fseek(FSEEK_SET);

fseek(fptr, 0, SEEK_SET);         // volta ao início do arquivo
printf("\n\n em maiusculo :\n");  // mensagem e pula para a linha de baixo
while ((ch = fgetc(fptr)) != EOF) // percorre o arquivo ate o final EOF
printf("%c", toupper(ch));        // escreve as letras em maiúsculas

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!