Converter o código para Windows [RESOLVIDO]

1. Converter o código para Windows [RESOLVIDO]

Anderson Ferreira
anderson1277

(usa Ubuntu)

Enviado em 03/04/2010 - 19:14h

Galera como faço para transformar esse código para rodar no windows?


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <pwd.h>

int main(){
char *senha;
senha=getpass("Digite a senha:\n");
if(strcmp(senha,"lincolnpark")){
printf("Senha incorreta!");
}else{
printf("Senha Ok");
}
return 0;
}



  


2. MELHOR RESPOSTA

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 05/04/2010 - 09:07h

Opa! Tô no Pc da facul que tem o Code Blocks. Compilei com (char *) lá no malloc e funfou de boa.

Tá aqui o código completo e funcionando:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

char *getpass() {
char *senha ;
char ch ;
int i = 0;

// Cria um vetor de 30 posicoes
senha = (char *) malloc(30 * sizeof(char) ) ;

while ( 1 ) {
ch = getch() ;
if ( ch == 13) break ;
senha[i++] = ch ;
}
senha[i] = '\ 0' ; // Retire o espaço entre \ e 0

return senha ;
}

int main(){
char *senha ;
printf("Digite a senha: ");
senha = getpass() ;
printf("\n|%s|\n",senha) ; // testando
if(strcmp(senha,"lincolnpark")){
printf("\nSenha incorreta!\n");
}else{
printf("\nSenha Ok\n");
}

free(senha) ;
system("pause") ;
return 0 ;
}

Abraços
t+

3. Re: Converter o código para Windows [RESOLVIDO]

Rodrigo Chaves
stilldre

(usa Funtoo)

Enviado em 03/04/2010 - 19:23h

já tentou compilar e executar? ocorreu algum erro? como você está compilando o código, através de uma IDE ou pela linha de comando? nos dê mais informações e quem sabe poderemos ajudar. abraço!


4. Re: Converter o código para Windows [RESOLVIDO]

Ricardo Cardoso
ricardo cardoso

(usa Debian)

Enviado em 03/04/2010 - 19:49h

Basta vc recompilá-lo através do windows. Voce pode ussar o Dev-c++ ou turbo c++ pra fazer isso.


5. Re: Converter o código para Windows [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 03/04/2010 - 20:42h

Acho que no Windows você não tem a função getpass(). O jeito então é implementar uma.
Como no linux a função getpass() não exibe os caracteres na tela, no windows você pode
utilizar getch() de conio.h, mas é preciso ler caractere por caractere e só
parar quando o usuário pressionar enter (código ascii 13):



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void getpass(char *senha) {
char ch ;
int i = 0;

while ( 1 ) {
ch = getch() ;
if ( ch == 13) break ;
senha[i++] = ch ;
}
senha[i] = '\ 0' ; // Retire o espaço entre \ e 0
}


int main(){
char senha[30] ;
printf("Digite a senha: ");
getpass(&senha) ;
if(strcmp(senha,"lincolnpark")){
printf("Senha incorreta!");
}else{
printf("Senha Ok");
}
system("pause") ;
return 0 ;
}

Aqui funcionou de boa. Vou ficar te devendo "aquela" função de ler passwords no windows, porque
de fato eu não conheço nenhuma :D

Abraços
t+


6. Vlw cara

Anderson Ferreira
anderson1277

(usa Ubuntu)

Enviado em 03/04/2010 - 21:53h

Daemonio aki não funcionou deu isso "|21|cannot convert `char (*)[30]' to `char*' for argument `1' to `void getpass(char*)'|""|22|error: `strcmp' was not declared in this scope|" me envia o código fonte por e-mail se der.


VLW cara um abraço

andersonferreira1277@gmail.com


7. Re: Converter o código para Windows [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 03/04/2010 - 22:45h

Envio sim!!
Compilei no Dev-Cpp e tudo ocorreu de boa!

Tenta incluir aí a string.h:
#include <string.h>

Só para resolver o problema da função strcmp().

t+


8. Re: Converter o código para Windows [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 04/04/2010 - 05:08h

Ok! Já que no Code Blocks não está rodando, vamos apelar para o malloc:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

char *getpass() {
char *senha ;
char ch ;
int i = 0;

// Cria um vetor de 30 posicoes
senha = malloc(30 * sizeof(char) ) ;

while ( 1 ) {
ch = getch() ;
if ( ch == 13) break ;
senha[i++] = ch ;
}
senha[i] = '\ 0' ; // Retire o espaço entre \ e 0

return senha ;
}

int main(){
char *senha ;
printf("Digite a senha: ");
senha = getpass() ;
printf("\n|%s|\n",senha) ; // testando
if(strcmp(senha,"lincolnpark")){
printf("\nSenha incorreta!\n");
}else{
printf("\nSenha Ok\n");
}

free(senha) ;
system("pause") ;
return 0 ;
}

Teste aí!

t+


9. Re: Converter o código para Windows [RESOLVIDO]

Anderson Ferreira
anderson1277

(usa Ubuntu)

Enviado em 04/04/2010 - 17:29h

cara tbm ñ funcionou
|12|error: invalid conversion from `void*' to `char*'|


10. Re: Converter o código para Windows [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 04/04/2010 - 18:51h

De ser ali na linha do malloc:

Troque
senha = malloc(30 * sizeof(char) ) ;
por
senha = (char *) malloc(30 * sizeof(char) ) ;

Tenta aí.
t+


11. Re: Converter o código para Windows [RESOLVIDO]

Anderson Ferreira
anderson1277

(usa Ubuntu)

Enviado em 04/04/2010 - 20:56h

Cara vou baixar o dev e depois digo se pegou



VLW d+


12. Re: Converter o código para Windows [RESOLVIDO]

Ricardo Cardoso
ricardo cardoso

(usa Debian)

Enviado em 04/04/2010 - 21:20h

Cara estou recompilando o codigo aqui, mas vamos recapitular.

Se for digitado "lincolnpark" a senha vai estar correta.

Pelo que sei e andei pesquisando, getpass é para retornar a senha e não funciona no windows e no windows a biblioteca pwd.h não é necessária.

Assim que eu resolver aqui e mando o código.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts