Escreva suas próprias funções de tratamento de memória. Escreva suas próprias versões das funções da Figura 8.30 para manipular blocos de memória.
Passo 1
E aí meus queridos!! Tudo bem com vocês??
Hoje vamos falar sobre funções de memória da biblioteca de tratamento de strings. Vamos falar de funções como memcpy, memmove, memcmp, memchr e memset.
Preparem seus compiladores e vamos lá!!
Passo 2
Primeira coisa, vamos entender a função memcpy. A função memcpy trabalha com 3 argumentos:
Memcpy(Primeiro argumento, segundo argumento, terceiro argumento); Sendo:
Primeiro argumento – variável que vai receber a string copiada.
Segundo argumento – variável que vai ser copiada.
Terceiro argumento – quantidade de caracteres da string a ser copiado.
Ou seja, a nossa função trabalha copiando um elemento de uma string e passando para outro. Vamos ver um exemplo:
Vamos criar um programa que vai pedir do usuário o nome dos funcionários de uma empresa e os anos trabalhados. O programa deverá retornar uma lista com os nomes dos funcionários que tem mais de 5 anos na empresa.
Agora que vimos o que a função memcpy faz, vamos para a próxima função!
Passo 3
A função memmove também possui 3 argumentos, porém ela armazena a string copiada no início da primeira string de acordo com o número de caracteres que exigirmos, sem excluir o restante da primeira.
Memmove(Primeiro argumento, segundo argumento, terceiro argumento); Sendo:
Primeiro argumento – variável que vai receber a string copiada.
Segundo argumento – variável que vai ser copiada.
Terceiro argumento – quantidade de caracteres da string a ser copiado.
Vamos ver um exemplo simples:
Vamos fazer um programa que vai substituir os “XXXXXXXXX” da primeira string pela frase da segunda string, sem alterar o restante da frase:
Se compilarmos esse programa seu resultado sairá:
Passo 4
Vamos ver agora um pouco da função memcmp. Essa função vai comparar duas strings de nossa escolha e retornar 3 possíveis valores. São eles:
Se as strings são iguais. – Retorna 0;
Se a primeira string for maior que segunda. – Retorna > 0;
Se a primeira string for menor que a segunda – Retorna
Vamos fazer um programa que compara duas strings e retornar se elas são maiores, menores ou iguais após a comparação.
Lembre-se: As strings serão comparadas de acordo com sua posição na tabela ASCII. Então letras maiúsculas e minúsculas fazem diferença na comparação.
Passo 5
Agora vamos observar a função memchr. Essa função compara numa string se existe um caractere específico e retorna o restante da string após o caractere de acordo com a quantidade de caracteres comparados.
Memchr(Primeiro argumento, segundo argumento, terceiro argumento); Sendo:
Primeiro argumento – string que será comparada.
Segundo argumento – caractere que fará a busca na string.
Terceiro argumento – quantidade de caracteres da string a ser comparados.
Vejamos um exemplo:
Aqui o caractere ‘m’ foi encontrado na palavra melhor. Então nosso programa deverá retornar o restante da string após este caractere.
Passo 6
E para finalizar, vamos observar a função memset. Essa função trabalha da seguinte maneira:
Memset(Primeiro argumento, segundo argumento, terceiro argumento); Sendo:
Primeiro argumento – string.
Segundo argumento – caractere que será inserido no início da string.
Terceiro argumento – quantidade de vezes que o caractere será inserido.
Ou seja, a nossa função pega o caractere de nossa escolha e o coloca nos primeiros espaços da string de acordo com a quantidade de vezes que pedimos no terceiro argumento. Lembre-se que ele substitui independente se já possui um valor na nossa string.
Veja um exemplo:
Aqui o caractere ‘A’ substitui 1 vez na string substituindo o ‘X’.
Assim finalizamos o exercício!! Dê Ctrl+n no seu compilador e bora para o próximo exercício!!
Resposta
Ei, a resposta está no passo a passo :)