Ir para o conteúdo
russo12

Verificar se a string introduzida pelo utilizador é igual à do ficheiro externo

Mensagens Recomendadas

russo12

Boas pessoal, tenho uma dúvida.

Como verificar se as strings user e pass introduzidas pelo utilizador são iguais às strings que aparecem no output?

Tendo em conta que o ficheiro txt consta:

Maria:123456

Manel:987654

o Código para abrir e ler o que está no ficheiro ser ser o que está em comentário:

int main (void)
{
char url[] = "login.txt", user_pass[20];
int i;
char pass[9], user[9];
char *c;
FILE *arq;



arq = fopen(url, "r");
if (arq == NULL)
printf("Erro, nao foi possivivel abrir o arquivo!!!\n");
else
{
while( (fscanf(arq, "%s\t\n", user_pass))!=EOF)
{
c = strtok(user_pass, ":");
while (c != NULL)
{
printf("%s\n", c);
c = strtok(NULL, ":");
}
}
}
/* if (pass == user_pass)
{
strcmp("%s\t","%s\n", pass, user_pass);
printf("USERNAME CORRETO!!!!\n");
else
printf("
} */


fclose(arq);

return 0;
}

Output:

Maria

123456

Manel

987654

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
russo12

Exato, e coloquei assim

if (strcmp(user, user_pass) == 0)
 {
  printf("USERNAME CORRETO!!!!\n");
 }
 else
  printf("[ERRO] USERNAME ERRADO!!!!\n");

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
russo12

Dá-me erro, logo há problema... aparece warnings a dizer que não é possível

printf("Introduza username: ");

fscanf("%s", user);

Alguém me consegue e pode explicar o que estou a fazer de errado

#define PALAVRA 10
void main (void)
{
char url[] = "login.txt", user_pass[20];
//int i=0;
char user[PALAVRA], pass[PALAVRA];
char *c;
FILE *arq;

printf("Introduza username: ");
fscanf("%s", user);
printf("Introduza password: ");
fscanf("%s", pass);

arq = fopen(url, "r");
if (arq == NULL)
printf("Erro, nao foi possivivel abrir o arquivo!!!\n");
else
{
while( (fscanf(arq, "%s\t\n", user_pass))!=EOF)
{
c = strtok(user_pass, ":");
while (c != NULL)
{
printf("%s\n", c);
c = strtok(NULL, ":");
}
}
}

/* como é que hei-de fazer para ir comparar linha
 a linha tanto para o user como para a pass????*/
if (strcmp(user, user_pass) == 0)
printf("USERNAME CORRETO!!!!\n");
else
printf("[ERRO] USERNAME ERRADO!!!!\n");
if (strcmp(pass, user_pass)== 0)
printf("PASSWORD CORRETA!!!!\n");
else
printf("[ERRO] PASSWORD ERRADA!!!!\n");
fclose(arq);
}

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

em vez de obrigares o fórum a estar a ler linhas de código, seria melhor apresentares uma cópia integral das mensagens que te são apresentadas


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
russo12

Ok, sorry

O que aparecem são warnings em relação a:

fscanf("%s", user);

fscanf("%s", pass);

diz que não é uma formato de string e sem formatos de argumento

passagem de argumento 1 de fscanf do tipo de ponteiro incompatível

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
russo12

Vi, ou seja, pelo que percebi, fscan é lido relativamente ao ficheiro, se for scanf é um formato de algo escrito antes?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
russo12

Pensava que lesse a string que pretendia mas não... le a partir do fluxo de entrada que indiquei... o que não é o que pretendo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
russo12

Se eu colocar, dá-me um erro segmentation fault :confused:

printf("Introduza username: ");
fscanf(arq, "%s", user);

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
russo12

Mas o objetivo é, introduzir a string do username e depois ir comparar com as linhas ímpares que são os users e as pares as passwords

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.