Escreva suas próprias funções de comparação de strings. Escreva duas versões da função de comparação de strings da Figura 8.20. A primeira versão deverá usar o subscrito de array, e a segunda, ponteiros e aritmética de ponteiro.

Passo 1

Fala pessoal, tudo certinho? vamos responder mais uma questão, então prepara o material e vamos responder!!

Primeiro, escreveremos as funções usando as assinaturas de array. Vamos nomeá-los

funções strcmp1 e strncmp1. A função strcmp1 pode ser assim

Executamos o loop for desde que não haja um caractere que seja um terminador de string. Nós usaremos a variável de controle para indexar os elementos das matrizes char. Quando nós nos deparamos com os diferentes valores que retornamos 1 ou -1. Se isso nunca acontecer, retorna 0, indicando que as strings são iguais.

Passo 2

Agora, vamos ver o código para strncmp1.

O código é praticamente o mesmo do passo anterior. A única diferença é que temos outra condição no laço onde verificamos se n é maior que i. Se esse não é o caso, o loop para.

Passo 3

Podemos escrever as funções usando os ponteiros e a aritmética de ponteiros. A função

strcmp2 pode ficar assim:

Mais uma vez, usamos o loop for, mas desta vez não precisamos de uma variável de controle, já que podemos resolver tudo usando apenas ponteiros. Comparamos os valores de caracteres “desreferenciando” seus ponteiros. No final do loop, movemos os ponteiros usando a aritmética de ponteiro apropriada. Se todos os personagens forem iguais, retornamos 0 no final.

Passo 4

Finalmente, nossa função strncmp2 pode ficar assim:

Mais uma vez, esta função é muito semelhante à função que escrevemos no anterior degrau. A única diferença é que precisamos de uma nova variável que incrementamos em cada passo do laço. Além disso, precisamos adicionar uma nova condição que verifica se o valor desta variável é menor que o argumento dado n. Quando isso acontece, o loop deve parar.

Passo 5

Um programa de teste simples pode ser assim:

Passo 6

O código completo será igual a:

Com mais essa parte

E finalmente

Resposta

A saída será igual a