Converter string em minúsculas em C
-
Use a função
tolower
para converter string em minúsculas em C - Use a função personalizada para converter string em minúsculas em C
Este artigo demonstrará vários métodos sobre como converter string em minúsculas em C.
Use a função tolower
para converter string em minúsculas em C
A função tolower
é parte da biblioteca padrão C definida no arquivo de cabeçalho <ctype.h>
. tolower
recebe um argumento do tipo int
e retorna o valor convertido do caractere fornecido se a representação em minúsculas correspondente existir. Observe que o caractere passado precisa ser do tipo EOF ou unsigned char
representável. Nesse caso, inicializamos o ponteiro char
com um valor literal de string e, em seguida, iteramos sobre cada caractere para converter para valores em minúsculas. Lembre-se, porém, de que passar argumentos do tipo char
para a função tolower
deve ser convertido para unsigned char
.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = "THIS STRING LITERAL IS ARBITRARY";
printf("%s\n", str);
for (size_t i = 0; i < strlen(str); ++i) {
printf("%c", tolower((unsigned char)str[i]));
}
printf("\n");
exit(EXIT_SUCCESS);
}
Resultado:
THIS STRING LITERAL IS ARBITRARY
this string literal is arbitrary
O código do exemplo anterior substitui o conteúdo da string original pelos caracteres convertidos em minúsculas. Alternativamente, podemos alocar outro ponteiro char
usando calloc
, que é semelhante a malloc
, exceto que zera a memória alocada e armazena a string convertida separadamente. Observe que o ponteiro deve ser liberado antes da saída do programa ou, se o processo for de longa duração, ele deve ser liberado assim que a variável string não for necessária.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = "THIS STRING LITERAL IS ARBITRARY";
printf("%s\n", str);
size_t len = strlen(str);
char *lower = calloc(len + 1, sizeof(char));
for (size_t i = 0; i < len; ++i) {
lower[i] = tolower((unsigned char)str[i]);
}
printf("%s", lower);
free(lower);
exit(EXIT_SUCCESS);
}
Resultado:
THIS STRING LITERAL IS ARBITRARY
this string literal is arbitrary
Use a função personalizada para converter string em minúsculas em C
Uma solução mais flexível seria implementar uma função personalizada que leva a variável de string como o argumento e retorna a string convertida em minúsculas em um local de memória separado. Este método é essencialmente o desacoplamento do exemplo anterior da função main
. Neste caso, criamos uma função toLower
que leva char*
, onde uma string terminada em nulo é armazenada e um inteiro do tipo size_t
denotando o comprimento da string. A função aloca a memória no heap usando a função calloc
; assim, o chamador é responsável por desalocar a memória antes que o programa seja encerrado.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *toLower(char *str, size_t len) {
char *str_l = calloc(len + 1, sizeof(char));
for (size_t i = 0; i < len; ++i) {
str_l[i] = tolower((unsigned char)str[i]);
}
return str_l;
}
int main() {
char *str = "THIS STRING LITERAL IS ARBITRARY";
printf("%s\n", str);
size_t len = strlen(str);
char *lower = toLower(str, len);
printf("%s", lower);
free(lower);
exit(EXIT_SUCCESS);
}
Resultado:
THIS STRING LITERAL IS ARBITRARY
this string literal is arbitrary
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook