Essa dificuldade se torna ainda maior se você já tiver
estudado outra linguagem de programação, como Java, Perl ou Python, onde a
manipulação de texto é extremamente óbvia e simples.
Mas essa simplicidade toda não vem de graça, requer custos:
processamento e memória de um computador.
Vamos agora, em nossa apostila de C, apresentar as principais funções para
manipulação de strings, como usá-las
e melhor: como criá-las! Sim, vamos criar funções de manipulação de strings para você saber como tudo
funciona em C e como exercícios.
- Download de nossa apostila: Apostila de C
- Clique aqui e saiba como obter seu certificado de programação C!
A biblioteca string.h e suas funções: quais existem, para quê servem e como usá-las
Vamos agora mostrar as funções da biblioteca string.h e o
que cada uma faz.
Embora essas funções já existam e sejam testadas milhões
de vezes a cada instante, vamos refazê-las.
“Mas para quê inventar algo que já existe?”
Simples: para aprender como funciona.
Simples: para aprender como funciona.
Você só aprende algo de verdade, quando faz a coisa. Só
ver ou decorar como faz, não serve de absolutamente nada.
Você pode muito bem ler aqui as funções que existem, para
quê servem e como usá-las.
Mas se quer realmente aprender a trabalhar com vetores,
ponteiros e strings, sugerimos que tente fazer funções e colocar em sua
biblioteca mystring.h
É isso o que vamos fazer nos próximos tutoriais.
Segue a lista das funções da biblioteca string.h cuja fonte é a Wikipedia:
Funções de exame de strings:
- strlen:
size_t strlen( const char *str );
Essa função recebe um ponteiro que indica uma string e
retorna quantos caracteres essa string possui.
- strcmp:
int strcmp( const char *lhs, const char *rhs );
Essa função compara duas strings segundo sua ordem
alfabética e retorna um inteiro.
Se esse inteiro for negativo, é porque a primeira string
é menor que a segunda.
Se retornar um inteiro positivo, é porque a segunda
string é maior que a segunda.
Se retornar 0, é porque as strings são idênticas.
- strncmp:
int strncmp( const char *lhs, const char *rhs, size_t count );
Faz a mesma comparação da strcmp, mas ao invés de
comparar toda a string, compara somente os 'count' primeiros caracteres.
- strchr:
char *strchr( const char *str, int ch );
Retorna um ponteiro para a localização em que o caractere
'ch' aparece na string pela primeira vez na string apontada por *str, ou NULL
se não encontrar.
- strrchr:
char *strrchr( const char *str, int ch );
Faz a mesma coisa da função anterior, mas ao invés de
localizar a primeira ocorrência de 'ch', localiza e retorna a última
ocorrência.
- strspn:
size_t strspn( const char *dest, const char *src );
Retorna o tamanho máximo do primeiro segmento na string
'dest' que consiste de elementos da string 'src'.
- strcspn:
size_t strcspn( const char *dest, const char *src );
É o contrário da anterior, ou seja, retorna o tamanho
máximo do segmento inicial na string 'dest' que consiste somente de elementos
que NÃO ESTÃO na string 'src'.
- strpbrk:
char* strpbrk( const char* dest, const char* str );
Retorna o primeiro caractere que está em ambas strings
recebidas, ou NULL se não existe caractere comum.
- strstr: char *strstr( const char* str, const char* substr
);
Retorna um ponteiro que indica a primeira ocorrencia da
string 'substr' na string 'str'.
Funções de manipulação de strings
- strcpy: char *strcpy( char *dest, const char *src );
Copia a string 'src' para a string 'dest', e retorna um ponteiro para 'dest'.
- strncpy: char *strncpy( char *dest, const char *src, size_t count );
Faz a mesma coisa da strcpy, mas em vez de copiar todos os elementos, copia somente os 'count' primeiros elementos da 'src' para a 'dest'.
- strcat: char *strcat( char *dest, const char *src );
Copia (concatena) a string 'src' ao final da string 'dest'.
- strncat: char *strncat( char *dest, const char *src, size_t count );
Copia (concatena) 'count' elementos da string 'src' no final da string 'dest'.
- memset:
void* memset( void* dest, int ch, size_t count );
Coloca o caractere 'ch' nas 'count' primeiras posições da
string 'dest'.
- memcpy:
void* memcpy( void* dest, const void* src, size_t count );
Copia os 'count' primeiros caracteres da string 'src' e
coloca nas primeiras 'count' da string 'dest'.
- memcmp:
int memcmp( const void* lhs, const void* rhs, size_t count );
Compara os 'count' primeiros caracteres das strings.
Retorna negativo se os 'count' primeiros caracteres da
primeira string forem menor que a segunda.
Retorna positivo se os 'count' primeiros caracteres da
primeira string forem maior que a segunda.
Retorna 0 se os 'count' primeiros caracteres das duas
strings são iguais.
- memchr:
void* memchr( const void* ptr, int ch, size_t count );
Acha a primeira ocorrência do caractere 'ch' nos primeiras
'count' elementos da string 'ptr' e devolve o endereço da ocorrência ou NULL.
4 comentários:
Tenho uma duvida nao sei se pertence a esse topico, estou fazendo um programa que simula um jogo de dados, temos 2 dados somamos eles e o utilizador tem de adivinhar o resultado da soma, ja tenho todo feito mas tbm queria colocar nele para que toda a vez que o utilizador usar letras onde é suposto usar numeros aparecer uma mensagem de erro que ele nao pode fazer isso
Anônimo,
Na biblioteca ctype.h tem uma função chamada isdigit(), que recebe um caractere.
Ele retorna 0 se esse caractere NÃO for um número (um dígito), e retorna outro número (verdadeiro) caso seja um dígito decimal.
Ou seja, tu pede o resultado da soma pro usuário, armazena e testar com um IF se é um número mesmo, através da função isdigit().
tenho uma dúvida, estou desenvolvendo um programa, onde preciso saber se um string "10 20" é um subconjunto de outra string por exemplo "10 15 20", existe uma função em c que consiga verificar isto, ou preciso separa-los antes de verificar, desde já agradeço.
Gente uma duvida
Preciso de um programa que epgue um numero em hexadecimal em C e transforme ele no seu caractere correspondente CHAR, alguem pode me dizer que programa de que biblioteca pode me ajudar e como fazer isso?
Postar um comentário