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 :)