gladiador Postado Junho 3, 2009 Denunciar Share Postado Junho 3, 2009 // caras estou com um dilema como posso fazer isto :o cara digita um usuario e uma senha em tipo char pode ser :char user[10] , senha[10]; printf("digite usuario"); como colho o user em string ??? printf("digite a senha"); como colho a senha em string ??? e como eu checo ?? (if user == "teste" && senha == "teste"){ printf("autoriza"); } else { printf("não autoriza"); }não dá erro mas também não colhe nada , dá não autoriza ainda que o user e senha estejam corretastem algum macete ??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 OSJunior Postado Junho 3, 2009 Denunciar Share Postado Junho 3, 2009 Tente assim:char senha[10]; printf("Senha: "); scanf("%s", senha) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gladiador Postado Junho 3, 2009 Autor Denunciar Share Postado Junho 3, 2009 (editado) Não tá colhendo amigo, quanto a rotina tudo bem, mas deve ter um macete para colher string //exemplochar user[10] senha[10]; printf("digite user "); scanf("%s", user); printf("digite senha "); scanf("%s", senha); if(user == "teste" && senha == "teste"){ printf("ingress") } else{ printf("não ingressa") }ou seja, lógica é o de menos eu quero ver resgatar o user e senha , pois, não está fazendo ele simplesmente não ingressa já tentei colher com & e nada , alguém sabe C aqui ??? Editado Junho 3, 2009 por gladiador Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Junho 3, 2009 Denunciar Share Postado Junho 3, 2009 Tente assim:#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ char usuario[10]; char senha[10]; //Obtém os dados printf("digite o usuario: "); scanf("%s",&usuario); printf("digite a senha: "); scanf("%s",&senha); //Confirma os dados if (strcmp(usuario,"jonathan")==0 && strcmp(senha,"valor")==0){ printf("Usuario e senha corretos !\n"); }else{ printf("Usuario ou senha invalidos\n"); } system("pause"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jefers0n Postado Junho 3, 2009 Denunciar Share Postado Junho 3, 2009 Não tá colhendo amigo, quanto a rotina tudo bem, mas deve ter um macete para colher string //exemplochar user[10] senha[10]; printf("digite user "); scanf("%s", user); printf("digite senha "); scanf("%s", senha); if(user == "teste" && senha == "teste"){ printf("ingress") } else{ printf("não ingressa") }ou seja, lógica é o de menos eu quero ver resgatar o user e senha , pois, não está fazendo ele simplesmente não ingressa já tentei colher com & e nada , alguém sabe C aqui ???Cara, tu não podes comparar strings com igualdade(==). Tenta usar a função do C, chamada strcmp(string1, string2), que compara duas strings, e retorna o resultado da comparação, através de um valor. Se este valor for 0 (zero ), as duas strings são iguais, caso contrário são diferentes.Dei uma pesquisada na net e to te passando o que entendi(já usei a strcmp e sei que funciona, mas tb não sou expert em C, estou te passando um pouco do que encontrei e achei bem interessante)Na linguagem C ou C++ as strings não são "objetos de primeira classe", isto é, a linguagem em si não tem strings. O que é possível, é estender a linguagem com conceitos de strings. A linguagem suporta os tipos básicos int e double, número inteiro...O padrão do C define que o tipo "int" tem de ter pelo menos 16 bits, e que o tipo "char" tem de ter pelo menos 8.Além destes tipos básicos, a linguagem suporta ponteiros para estes. Um ponteiro é um número que se refere a uma posição na memória. Na linguagem C, a convenção para representar uma string é representar como uma sequência de chars consecutivos na memória terminados com o valor "contra barra zero".Quando fazes a declaração: char* str = "ABC"; o compilador cria no segmento de dados do programa a sequência 'A', 'B', 'C', 'contra-barra zero', e gera código para que a variável local str passe a ter o endereço do carácter 'A'.A expressão (str + 1), por exemplo, é um ponteiro para o carácter 'B', e a expressão *(str + 2) significa o carácter apontado por (str + 2), logo 'C', e é equivalente da expressão str[2].Se eu declarar dois arrays de caracteres como fizeste, haverão duas regiões no segmento de dados não inicializados com espaço para 10 caracteres, e as variáveis que declaraste tomarão cada uma o endereço do primeiro dos caracteres em cada um dos arrays.Por essa razão, a comparação será sempre falsa, porque por mais que os dois arrays contenham os mesmos caracteres, estes estão em zonas diferentes da memória.Espero ter ajudado.[]'sJeferson Neves Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gladiador Postado Junho 3, 2009 Autor Denunciar Share Postado Junho 3, 2009 Opá Jonathan, virou a bagaça por aqui , bele era isto mesmo, só achei meio estranho u funcionamento , mas tá beleza !valeu Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Janeiro 2, 2018 Denunciar Share Postado Janeiro 2, 2018 Seria assim a forma adequada de se fazer esse exercício. Só usei o sinal de negação "!" que é equivalente a fazer == 0 Dá uma olhada: #include<stdlib.h> #include<string.h> int main(){ char usuario[10]; char senha[10]; //Obtém os dados printf("digite o usuario: "); scanf("%s", usuario); printf("digite a senha: "); scanf("%s", senha); //Confirma os dados if (!strcmp(usuario, "teste") && !strcmp(senha,"teste")) { printf("Usuario e senha corretos!\n"); }else { printf("Usuario ou senha invalidos\n"); } system("pause"); } Assim está dando certo e, pelo que aprendi, é a maneira correta para se comparar Strings em C. Em C não se usa o == para comparar Strings de forma alguma. Para isso tem a função strcmp() da biblioteca "string.h" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Janeiro 2, 2018 Denunciar Share Postado Janeiro 2, 2018 Para entender de maneira simples o q a função strcmp() faz é o seguinte: Essa função não pergunta se as Strings são iguais, o q ela faz é perguntar se elas são diferentes, ou seja: A String usuario é diferente da String teste? Não! Então ok! a 1ª condição é verdadeira. Por isso o sinal de negação. O mesmo acontece com a senha. A String senha é diferente de teste? Não. Então ok! As duas condições são verdadeiras e por isso o bloco if é executado. Essa é a maneira ideal para entender o q a função strcmp() faz. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
gladiador
// caras estou com um dilema
como posso fazer isto :
o cara digita um usuario e uma senha em tipo char pode ser :
como colho a senha em string ??? e como eu checo ??não dá erro mas também não colhe nada , dá não autoriza ainda que o user e senha estejam corretas
tem algum macete ???
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.