char * [RESOLVIDO]

1. char * [RESOLVIDO]

doom load
doomload

(usa Ubuntu)

Enviado em 15/12/2015 - 18:15h

Olá pessoal,

Eu li o excelente artigo do Elgio "Código C para gerar hashes DES e MD5" aqui na VOL, e eu fiquei com uma dúvida e gostaria de saber se alguém pode me auxiliar por favor, ele usa:

senhaHash = (char *) crypt(senhaTextoClaro, salt);

Do que eu sei de C, eu conheço um pouco sobre ponteiros, mas eu não consigo compreender o que esse "(char *)" faz antes da função crypt, por que ele tem que estar ali alguém sabe me dizer?

Obrigado


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/12/2015 - 22:34h

Em C, uma expressão na forma

(tipo)expr 


significa que o resultado da expressão expr deve ser interpretado como se fosse do tipo de dados tipo, mesmo que o tipo original de expr fosse outro.

Esse tipo de operação é chamado type casting ou casting (em Português, diz-se coerção de tipos, mas raríssimas vezes eu ouvi ou vi alguém traduzir os termos em Inglês). Algumas vezes, um casting provoca realmente uma conversão da representação interna (por exemplo, quando se converte explicitamente um valor de inteiro para ponto flutuante ou vice-versa); noutras vezes não se muda o valor absoluto, mas tão-somente a forma de interpretá-lo. Coerções de ponteiros de um tipo de dados para ponteiros de outro tipo são desse segundo tipo.

Aplicando a forma (tipo)expr ao trecho de código destacado, o tipo de dados que se deseja obter é char * (ou seja, um ponteiro para caracteres), e o valor a ser convertido é o resultado da chamada à função crypt().

Curiosamente, no entanto, essa coerção é totalmente desnecessária, pois a função crypt() já retorna nativamente um valor que é do tipo ponteiro para caracteres.

3. Re: char *

Matth
MattF

(usa Slackware)

Enviado em 15/12/2015 - 18:26h

doomload escreveu:

Olá pessoal,

Eu li o excelente artigo do Elgio "Código C para gerar hashes DES e MD5" aqui na VOL, e eu fiquei com uma dúvida e gostaria de saber se alguém pode me auxiliar por favor, ele usa:

senhaHash = (char *) crypt(senhaTextoClaro, salt);

Do que eu sei de C, eu conheço um pouco sobre ponteiros, mas eu não consigo compreender o que esse "(char *)" faz antes da função crypt, por que ele tem que estar ali alguém sabe me dizer?

Obrigado


Apesar de não ter nenhuma noção do que se trata, tenho um palpite. Isso significa que a função deverá retornar um ponteiro para uma char. Isso é comum quando se deseja manipular strings em C, o que se encaixa com o caso de uma senha.


4. Re: char * [RESOLVIDO]

doom load
doomload

(usa Ubuntu)

Enviado em 16/12/2015 - 19:15h

Obrigado pelos esclarecimentos companheiros






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts