Apare uma corda em C
- Use a função personalizada para cortar uma string em C
- Use outra função personalizada para aparar uma string em C
Este artigo explicará vários métodos de como aparar uma string em C.
Use a função personalizada para cortar uma string em C
As funções de corte de string não fazem parte dos utilitários de string da biblioteca C padrão nem são fornecidas pelas funções compatíveis com POSIX, portanto, é necessário implementar a funcionalidade por conta própria. Neste exemplo, implementamos a função chamada trimString
que recebe um único argumento de ponteiro char
e retorna o ponteiro para a string aparada. Observe que nós, como chamadores, somos responsáveis por passar a string que pode ser modificada. Neste caso, usamos strdup
para duplicar str1
, e quando a string é usada, deve ser liberada usando a chamada free
.
A função trimString
é implementada de modo que itera sobre a string caractere por caractere e, embora o dado seja um espaço, ela incrementa o ponteiro em um. Resumindo, este loop while
move o ponteiro char
para o primeiro caractere sem espaço, aparando o prefixo da string. Em seguida, o ponteiro incrementado é verificado se o valor é igual a nulo, implicando que a string dada não tinha caracteres que não fossem de espaço; portanto, retornamos o nulo para denotar o caso de erro. O loop Consequent while
remove os espaços no final da string movendo o ponteiro para o final da string, um a um. Depois que o loop encontra o caractere sem espaço, ele para e a próxima instrução coloca o caractere \0
no final dele.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *trimString(char *str) {
char *end;
while (isspace((unsigned char)*str)) str++;
if (*str == 0) return str;
end = str + strlen(str) - 1;
while (end > str && isspace((unsigned char)*end)) end--;
end[1] = '\0';
return str;
}
int main(void) {
const char *str1 = " temporary string ";
printf("%s\n", str1);
char *tmp = strdup(str1);
printf("%s\n", trimString(tmp));
free(tmp);
exit(EXIT_SUCCESS);
}
Resultado:
temporary string
temporary string
Use outra função personalizada para aparar uma string em C
Semelhante à função de corte anterior, trimString2
é implementado para remover espaços de ambos os lados da string. O primeiro loop while
calcula o número de espaços no final da string e o segundo loop move o ponteiro para o primeiro caractere sem espaço. No final das instruções de loop, len
contém o número de caracteres na string aparada gerada pela função strndup
. Observe que o ponteiro retornado da função strndup
deve ser liberado pelo chamador para evitar vazamentos de memória.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *trimString2(char *str) {
size_t len = strlen(str);
while (isspace(str[len - 1])) --len;
while (*str && isspace(*str)) ++str, --len;
return strndup(str, len);
}
int main(void) {
char *str2 = " temporary string ";
printf("%s\n", str2);
char *s = trimString2(str2);
printf("%s\n", s);
free(s);
exit(EXIT_SUCCESS);
}
Resultado:
temporary string
temporary string
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