Convertendo string minuscula para maiúscula em C.

Olá a todos, esse foi uma das maiores dúvidas que tinha, como fazer isso sem a necessidade de usar a função strupr(), que não existe no Linux diga-se de passagem, então resolvi combinar a função toupper(), que converter letras em maiúscula com um loop, para converter letra por letra, criei um código bastante simples abaixo. Salve e compile.

//EXEMPLO DE CONVERSAO DE STRINGS MINUSCULAS EM MAIUSCULAS EM C.
#include <stdio.h>
#include <ctype.h>// necessaria para toupper().

int main()
{
int i;
char palavra[20];
//Recebe a string.
printf("Digite uma palavra: ");
scanf("%19[^\n]", palavra);

//loop que efetua a conversao de letra por letra.
for(i=0;palavra[i]!='\0';i++)
{
palavra[i]=toupper(palavra[i]);
}

//Imprimi o resultado.
printf("%s\n",palavra);

return 0;
}

Saída:

Exibição da saída do código que converter minusculo em maiusculo compilado

Textos Relacionados:

Deixe um Comentário

23 Comentários.

  1. scanf(“%19[^\n]“, palavra);
    oque é %19 e [^\n] ?

  2. @Paulo

    O %[] indica que o scanf ira pegar um conjunto de caracteres, com o ^\n ele ira pegar todos os caracteres digitados até encontrar um \n(a tecla enter ser pressionada) combinando %[^\n] podemos pegar todos os caracteres digitados incluindo espaços :)

    Se colocar um numero após o % ira indicar a quantidade de caracteres que o scanf ira aceitar, pelo vetor de char ter espaço para 19 caracteres, coloco %19[^\n] assim o código fica mais seguro contra possíveis bugs. Caso o usuário digite mais de 19 caracteres, qualquer caractere que vir após o 19º não será capturada pelo scanf.

    []‘s

  3. Entendi, legal, valew!!!

  4. Muito bom, agora deixo a proposta de implementar a função toupper().
    Continuação de bom trabalho.

  5. @pem

    Hahaha boa xD, vou tentar, mas é uma excelente proposta :D

    []‘s

  6. Opa, valeu cara!!!

  7. Como converter de maiúsculas pra minúsculas?

  8. Convertendo string maiúscula para minuscula | 0fx66 - pingback on 7 de Dezembro de 2010 em 13:16
  9. @André Lima

    Olá André, você pode ver como fazer o processo contrário (converter de maiuscula para minuscula) aqui.

    []‘s

  10. tipow a biblioteca string.h tem uma funcao propria que possibilita converter a string toda sem a necessidade de um for para pesar o programa !!!

  11. nao é stupr(); essim strupr(); e sim ela nao existe no linux porem pode ser usada no windows.

  12. usei o loop e os caracteres ficaram todos e maiúsculas porem ao gerar um arquivo de texto(.txt)
    o programa esta imprimindo(fprintf) caracteres estranhos antes dos caracteres convertidos no loop.
    oque poderia ser feito para corrigir isso?

  13. cara como resolveria isso?
    “Fazer um programa para ler uma frase, esta frase
    representa o nome completo de uma pessoa separada
    por espaços, formatar e escrever esta frase para que
    somente a primeira inicial das palavras seja em letra
    maiúscula e as demais em letra minúscula.”

    • Sim, é muito simples, basta fazer um loop percorrer a string, e quando encontrar um caracter em branco (estamos partido do pre-suposto que a string terá o padrão que foi apresentado no comentário), quando encontrar um caracter em branco basta pegar o próximo carácter fique em maiúsculo, e os demais fiquem em minusculo até que encontre outro espaço em branco ou atinga o final da string.

      Agora a parte de código fica pro sua conta, já lhe dei o peixe :)

      []‘s

  14. Leia um vetor de 16 posições de inteiros e imprima-os na Tela. Após isto, troque os 08 primeiros valores pelos 08
    últimos valores. Repita a impressão do vetor.

  15. int vetor[16];
    int i;
    int aux;

    for(i=0;i<16;n++){ \\lê o vetor
    printf("Informe a %d posição do vetor: ",(i+1));
    scanf("%d"),vetor[i];
    }
    printf("\n\n");
    for(i=0;i<16;i++){ \\mostra o vetor informado
    printf("%d \t",vetor[i];
    }

    printf("\n\n");

    for(i=0;i<8;i++){ \\troca as posições
    aux=vetor[i];
    vetor[i]=vetor[i+8];
    vetor[i+8]=aux;
    }

    printf("\n\n");

    for(i=0;i<16;i++) \\imprime o vetor trocado
    printf("%d \t",vetor[i]);

    printf("\n\n\n");

    • **correção

      na linha de leitura de valores para o vetor:

      scanf(“%d”),vetor[i];

      deve ser substituido por:

      scanf(“%d”,&vetor[i]);

Deixe um Comentário

Trackbacks e Pingbacks:

SEO Powered by Platinum SEO from Techblissonline