aula 151

Como converter uma string em MAIÚSCULO ou MINÚSCULO em qualquer SO com a linguagem C?

Vamos aprender nesta aula a fazer um procedimento para converter uma string em MAIÚSCULO ou MINÚSCULO em qualquer sistema operacional com a linguagem C.

Já vimos na aula 140 que existem as funções strupr() e strlwr() para converter strings para maiúsculo ou minúsculo. Contudo, estas funções NÃO fazem parte da biblioteca padrão da linguagem C, dizendo em outras palavras, elas funcionam apenas no Sistema Operacional Windows.

Para contornar esse problema podemos criar nossas próprias funções para converter uma string para maiúsculo ou minúsculo que funcione em qualquer sistema operacional. Para isso podemos utilizar as funções toupper e tolower, que fazem parte da biblioteca padrão da linguagem C.

A função toupper recebe como parâmetro um caracter e retorna sua versão em maiúsculo enquanto a função tolower recebe um caracter como parâmetro e retorna sua versão em minúsculo.

Assim, com estas duas funções, fica extremamente fácil fazer nossa função para converter toda a string. A ideia é percorrer a string até o fim convertendo caracter por caracter.

As funções apresentadas a seguir recebem duas strings como parâmetro, S1 e S2. Convertem cada caracter da string S1 e salva em S2. Assim, a string original não é alterada.

Contudo, não precisa ser assim. As funções podem por exemplo receber apenas uma string e salvar a conversão na mesma string recebida, trocando os caracteres.

#include <stdio.h>
#include <stdlib.h>

// procedimento que converte uma string para maiúsculo
void maiusculo(char s1[], char s2[]){
    int i = 0;
    while(s1[i] != '\0'){
        s2[i] = toupper(s1[i]);
        i++;
    }
    s2[i] = '\0'; // caracteer que indica o fim da string
}

// procedimento que converte uma string para minúsculo
void minusculo(char s1[], char s2[]){
    int i = 0;
    while(s1[i] != '\0'){
        s2[i] = tolower(s1[i]);
        i++;
    }
    s2[i] = '\0'; // caracteer que indica o fim da string
}

int main() {
    char str1[] = "Ola. Bom dia.";
    char str2[500];

    printf("String original: %s\n", str1);

    maiusculo(str1, str2);
    printf("String maiuscula: %s\n", str2);

    minusculo(str1, str2);
    printf("String minuscula: %s\n", str2);

    return 0;
}


Deixe um comentário

2 × 4 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.