C - Como checar se existe um valor em um vetor/array? [RESOLVIDO]

1. C - Como checar se existe um valor em um vetor/array? [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 27/11/2019 - 01:18h

Minha dúvida é simples, mas que me deixou confuso!
Em C, Existe alguma forma de verificar se existe um valor em um vetor que não seja varrendo o vetor 1 a 1?

Exemplo:
char texto [] = "abcdef";

Então eu quero saber se a letra "c" existe nesse vetor!

OBS: Eu não quero usar for, while ou qualquer tipo de Loop que faça uma varredura no vetor! Pq isso eu sei fazer!
O que eu quero saber é se existe algum outro comando/função ou forma que eu possa apenas usar um IF ou um compare, sei lá.


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 27/11/2019 - 01:33h

Sim. Em <string.h> existe strchr().


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

3. Re: C - Como checar se existe um valor em um vetor/array? [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 27/11/2019 - 11:07h

paulo1205:: Sim. Em <string.h> existe strchr().

Obrigado! Acabei descobrindo que preciso estudar mais as Bibliotecas, pq uso bastante essa string.h e em nenhum momento pensei em estudar mais sobre ela ou o que mais ela pode fazer!




4. Re: C - Como checar se existe um valor em um vetor/array? [RESOLVIDO]

José
DeuRuimDotCom

(usa Linux Mint)

Enviado em 27/11/2019 - 18:11h

Pedindo licença, não estou convencido da resposta. "strchr()" de "<string.h>" se adequaria realmente às condições dadas no questionamento?
Posso estar errado, mas não consigo conceber um algoritmo que, no pior caso, não tenha de varrer o vetor por inteiro (claro, numa busca completamente "no escuro").


5. Re: C - Como checar se existe um valor em um vetor/array? [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/11/2019 - 04:08h

DeuRuimDotCom escreveu:

Pedindo licença, não estou convencido da resposta. "strchr()" de "<string.h>" se adequaria realmente às condições dadas no questionamento?
Posso estar errado, mas não consigo conceber um algoritmo que, no pior caso, não tenha de varrer o vetor por inteiro (claro, numa busca completamente "no escuro").


Eu pensei a mesma coisa quando escrevi a resposta original. Olhando pelo lado em que o autor da pergunta disse que não queria usar laços de repetição para verificar elemento por elemento, meu primeiro impulso foi o de dizer que isso era impossível.

Contudo, a mensagem tinha um outro lado, que indagava se não haveria algum mecanismo da linguagem ou uma função que pudesse ser usada para obter o resultado que ele desejava. Essa indagação não me pareceu estender a restrição quanto a fazer uma varredura dos elementos para dentro da construção ou função. Nesse caso, a resposta correta é “sim”, pois tal função existe.

Eu fiquei seriamente tentado a chamar a atenção para o fato de que a função não dispensa a operação de varredura, mas eu acabei decidindo não explicitar isso por dois motivos: o primeiro e mais importante é que minha esposa estava insistindo para que eu fosse dormir, e o segundo é que eu achei que isso seria chover no molhado, pois nosso colega poderia facilmente chegar — e espero que tenha chegado — à correta conclusão de que o uso da função é apenas uma conveniência visual na hora de escrever o programa, mas que não apenas não o exime do custo da verradura, como ainda pode ter o custo adicional relacionado à chamada de funções (possivelmente irrelevante para compiladores com otimização e inlining automático, mas mais relevante no caso de compilações em que a otimização não existe ou não pode ser usada).


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


6. Re: C - Como checar se existe um valor em um vetor/array? [RESOLVIDO]

José
DeuRuimDotCom

(usa Linux Mint)

Enviado em 28/11/2019 - 12:40h

Sim, Paulo. Talvez tenha me expressado mal. Quis fazer mais um adendo do que uma contestação a sua resposta.