Ir ao conteúdo

Posts recomendados

Postado
#include<stdio.h>
#include<string.h>


int validaSenha (char frase[20]){

int num, numMinusculo, numMaiusculo, cont;

for(int i = 0; frase[i] != '\0'; ++i){

    if (strlen(frase) >= 8)
        cont = 1;

    if(frase[i] >= 'a' && frase[i] <= 'z'){
        ++numMinusculo;
    }
    if(frase[i] >= 'A' && frase[i] <= 'Z'){
        ++numMaiusculo;
    }
    if((frase[i] >= '0') && (frase[i] <= '9')){
        ++num;
    }
}
if ((cont = 1) && (numMinusculo > 0) && (numMaiusculo > 0) && (num > 0))
        return 1;
else
        return 0;
}

int main(){
char frase[20];
int resultado;

printf("Informe sua senha: \n");
gets(frase);

resultado = validaSenha(frase);

printf("Resulatado: %d", resultado);


return 0;
}

Esse programa que eu estou criando deve receber uma string de tamanho 20.

Dentro da função:

O programa deve verificar se a string possua pelo menos 8 caracteres.

O programa deve verificar se contém ao menos uma letra maiúscula.

O programa deve verificar se contém ao menos uma letra minúscula.

O programa deve verificar se contém ao menos e ao menos um número.

Se o todos os casos acima forem verdadeiros deve retornar 1 caso contrario deve retornar 0.

O meu problema nesse codigo é que o meu só está retornando 1 mesmo os casos acima dando falso.

Postado
3 horas atrás, Emerson2156547384729849 disse:
if ((cont = 1)

Nessa parte está usando o operador de atribuição, para comparar use ==. Veja se com essa correção resolve: if((cont == 1). Inicie as variáveis da função,

 

int num = 0;
int numMinusculo = 0;
int numMaiusculo = 0;
int cont = 0;

  

Não use a função gets, alguns compiladores até emitem warning. Prefira fgets que é mais segura e neste caso considere que ela pode retornar +1 caractere por causa do '\n' no fim da string. Ou use scanf.

 

1 hora atrás, vangodp disse:
void foo( char str[100] ) {
    char aux[100];
    strcpy(aux, str);
    printf("%lld", strlen(aux));

}

 

Mas assim como strlen a função strcpy recebe um ponteiro com o endereço da string. Se consegue copiar também consegue retornar o tamanho com strlen, então não é necessário fazer essa cópia. Parece que você está confundindo strlen com sizeof.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...