-
Posts
12 -
Cadastrado em
-
Última visita
Reputação
7-
Olá, pessoas de outro mundo. Desculpe por atrapalhar seu dia de domingo. Estou com um problema que simplesmente não consigo resolver. Eu estava treinando linguagem C e fiz um código para simular um acesso com login e senha. Eu criei um Txt com 3 logins, um em cada linha. Meu objetivo é: O usuário digita (1) Entrar, então ele digita um login e o programa vai comparar o que ele digitou com cada linha do txt. Caso alguma linha seja igual o que ele digitou, vai pedir a senha. Quando eu digito a primeira linha, funciona. Mas se eu digitar o conteúdo da segunda ou terceira linha, o programa diz que o login não existe. Sendo que eu sei que existe porque foi eu quem escreveu! ^^' Meu código é o seguinte: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char login[20]; char logindigitado[20]; char logincadastro[20]; char senha[10]; char senhadigitada[10]; int opções,i=2; double horas,vendas; printf("\t\t\t\t-----------------------------------------------------\n"); printf("\t\t\t\t Digite o numero correspondende a opcao desejada:\n"); printf("\t\t\t\t-----------------------------------------------------\n"); printf("\t\t\t\t(1)Entrar\n"); printf("\t\t\t\t(2)Cadastrar\n"); printf("\t\t\t\t(3)Sair\n"); printf("\t\t\t\t-----------------------------------------------------\n"); printf("\t\t\t\t"); scanf("%i",&opções); switch(opções) { case 1: system("cls"); FILE* f; f =fopen("login.txt","r"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t Digite seu login:\n"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t");scanf("%s",logindigitado); while( fgets(login,20,f) != NULL) // O problema está aqui. Quando eu digito o login, só a primeira linha é reconhecida. { if(strncmp(login,logindigitado,12)==0) { system("cls"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t Digite sua senha de 6 numeros:\n"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t");scanf("%s",senhadigitada); } else if(strncmp(login,logindigitado,12)!=0) { while ((strncmp(login,logindigitado,12)!=0)) { system("cls"); printf("\t\t\t\tLogin incorreto. Tente novamente.\n"); printf("\n"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t Digite seu login:\n"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t");scanf("%s",logindigitado); } if(strncmp(login,logindigitado,12)==0) { system("cls"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t Digite sua senha de 6 numeros:\n"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t");scanf("%s",senhadigitada); } } fclose(f); FILE *s; s = fopen("senhas.txt","r"); while(fgets(senha,10,s)!=NULL) fclose(s); { if(strncmp(senha,senhadigitada,6)==0) { system("cls"); printf("\t\t\t\t ------------------------------\n"); printf("\t\t\t\tCALCULO SALARIAL\n"); printf("\t\t\t\t ------------------------------\n"); printf("\t\t\t\tDigite suas horas trabalhadas:\n"); printf("\t\t\t\t");scanf("%lf",&horas); printf("\n"); printf("\t\t\t\tDigite o valor das vendas feitas:\n"); printf("\t\t\t\t");scanf("%lf",&vendas); system("cls"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\tO valor do salario de %s: \n",logindigitado); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t ---> %.2f <---",horas*12,5+vendas*1,2); } else if (strncmp(senha,senhadigitada,6)!=0) { while(strncmp(senha,senhadigitada,6)!=0) { system("cls"); printf("\t\t\t\t\Senha incorreta!\n"); printf("voce tem %i chances.\n",i); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t Digite sua senha de 6 numeros:\n"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t");scanf("%s",senhadigitada); i--; if (i==0) { system("cls"); printf("\t\t\t\t---------------------------------------------------\n"); printf("\t\t\t\t\t voce ERROU SUA SENHA 3 VEZES\n"); printf("\t\t\t\t SENHA BLOQUEADA. PROCURE UMA AGENCIA PARA AJUDA-LO.\n"); printf("\t\t\t\t---------------------------------------------------\n"); exit(0); } if(strncmp(senha,senhadigitada,6)==0) { system("cls"); printf("\t\t\t\t ------------------------------\n"); printf("\t\t\t\tCALCULO SALARIAL\n"); printf("\t\t\t\t ------------------------------\n"); printf("\t\t\t\tDigite suas horas trabalhadas:\n"); printf("\t\t\t\t");scanf("%lf",&horas); printf("\n"); printf("\t\t\t\tDigite o valor das vendas feitas:\n"); printf("\t\t\t\t");scanf("%lf",&vendas); system("cls"); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\tO valor do salario de %s: \n",logindigitado); printf("\t\t\t\t------------------------------\n"); printf("\t\t\t\t ---> %.2f <---",horas*12,5+vendas*1,2); } } } } } break; case 2: printf("Digite um login para cadastro:\n"); scanf("%s", logincadastro); break; case 3: printf("Obrigado!! Volte sempre!!\n"); exit(0); } return 0; } Desculpem pelo código amador. Fiz um comentário onde acho que é o problema. Meu arquivo em txt tem duas linhas: Pablo1234567 Adrielle1783 Se eu digito "Pablo1234567", ele pede a senha. Agora, se eu digito "Adrielle1783" ele diz que o login é incorreto. Se alguém puder me ajudar, ficarei grato. Obrigado desde já!
-
@Lucca Rodrigues Obrigado, mano! Agora ficarei mais atento a essa diferença!!!
-
Olá, pessoas inteligentes. Eu estava tentando aplicar um pouco do que estava estudando aqui sobre linguagem C e, para isso, decidi fazer um programa que o usuário deve inserir um login e o programa deveria comprar esse login (string) inserida pelo usuário com logins(strings) que estavam em um documento de texto que criei. Como se fosse uma validação de login. Caso o login digitado fosse igual a algum dos logins existentes no documento de texto, o programa deveria pedia a senha. O código que fiz foi o seguinte: #include <stdio.h> #include <stdlib.h> int main() { char login[30]; char *log; int cp=0; printf("Digite seu login:\n"); scanf("%s",login); log=login; FILE*f; f=fopen("login.txt", "r"); while(*log!='0/'&& *f!='0/') { if(*log!=*f) { cp++; } log++; f++; } if(cp==0) { printf("Digite sua senha"); } return 0; } Nessa situação o código não compila. Aparece a seguinte mensagem: Então eu experimentei tirar o sinal ' * ' do f, tentando seguir o que entendi da mensagem de erro. Quando tiramos o asterisco de ' f ', o programa compila, mas não aparece a mensagem para digitar a senha. Se alguém puder mostrar os meus erros para eu aprender, ficarei muito grato. Desde já, obrigado.
-
@Lucca Rodrigues AHHHHHHHHHHH, NÂOOOOOOO. T_T Obrigado,mano. Desculpe tomar seu precioso tempo com isso ^^'.
-
Boa noite a todos! Galera, eu estava estudando a parte de funções e decidi implementar uma função com as seguintes características: -A função recebe dois parâmetros: Um vetor do tipo float e o numero que representa a dimensão do vetor. -Em seguida, dependendo do tamanho do vetor, a função leria a mesma quantidade de numeros que o usuário digitaria com o teclado. Por exemplo, se eu fiz a função com um vetor[5], o usuário digitaria 5 valores numericos e a função teria que me retornar o maior valor digitado. Então fiz o seguinte código: #include <stdio.h> #include <stdlib.h> float max(float v[], int n) //Declarando a função. { int i; for(i=0;i<n;i++) // Parte para escanear os valores digitados peo usuário. { scanf("%lf",&v[i]); } float maior=v[0]; for(i=1;i<n;i++) // Parte para me calcular o maior valor entre os valores fornecidos pelo usuário. { if(v[i]>maior); maior = v[i]; } return maior; } int main() //Testando a função. { float v[5]; printf("O maior: %.2f", max(v,5)); return 0; } Quando faço o teste de acordo com o código acima, aparece o seguinte: O maior valor sempre dá zero. Alguém poderia me dizer se é possível fazer essa função que citei acima? Qual é o erro? Desde já, obrigado!
-
@Lucca Rodrigues Mano, eu não mudei o diretório. Eu apenas peguei o arquivo em txt e coloquei dentro da pasta do programa do codeblock. Aí abriu normalmente. Mas agora que você falou das duas barras, eu aprendi a colocar o diretório.
-
@vangodp Não. Eu fiz o código no codeblock e copiei meu código e colei aqui ^^'. @Lucca Rodrigues Obrigado, mano. Ajudou bastante!
-
Boa tarde a todos! Galera, eu estava estudano como ler um arquivo de texto em C. Para isso, eu criei um arquivo com o bloco de notas e salvei na minha área de trabalho. Então eu fiz o seguinte código: #include <stdio.h> #include <stdlib.h> int main() { FILE *t; t = fopen("stringteste.txt", "r"); char texto[100]; while(fgets(texto,100,t) != NULL) { printf("%s",texto); } fclose(t); return 0; } O programa compila, mas não a parece a mensagem que escrevi, mas aparece isso: Então pense que talvez o ndereço do meu arquivo estaria escrito errado no código. Fui no arquivo, copiei o endereço dele e coloquei dentro do "fopen": #include <stdio.h> #include <stdlib.h> int main() { FILE *t; t = fopen("C:\Users\well\Desktop\stringteste.txt", "r"); char texto[100]; while(fgets(texto,100,t) != NULL) { printf("%s",texto); } fclose(t); return 0; } Nesse caso apareceu uma mensagem de erro. Então, não consigo perceber meu erro. Desde ja agradeço a ajuda de vocês. OBS: O nome do meu arquivo de texto é:
-
@devair1010 Muito obrigado!!!! Um ponto e vírgula que passa despercebido ferrou tudo hahaha valeu mesmo!
-
Olá, pessoas inteligentes. Preciso de uma breve ajuda. Estou fazendo alguns exercícios de vetores e me deparei com o seguinte enunciado: Então, eu fiz o seguinte código: #include <stdio.h> #include <stdlib.h> int main() { int v1[6]; int v2[6]; int i; printf("Digite 5 valores para o vetor 1:\n"); for(i=0; i<=4; i++) { scanf("%i",&v1[i]); } printf("Digite 5 valores para o vetor 2:\n"); for(i=0; i<=4; i++) { scanf("%i",&v2[i]); } for( i=0; i<=4; i++); { int soma = v1[i]+v2[i]; printf("A soma v1[%i]+v2[%i] = %i",i,i,soma); } return 0; } O programa compila e lê os 5 números para cada vetor, mas na hora de apresentar a soma, aparece isso: Gostaia de entender onde estou errando, por favor. Desde já, agradeço, galera.
-
PenseC alterou sua foto pessoal
-
Muito show, gente! Agora ficou claríssimo. Eu não tinha percebido essa matemática com os números que representam os caracteres. Muito obrigado!!!
-
Gente, estou lendo um livro de programação em C. No capítulo sobre funções, o autor me forneceu um exemplo com os seguintes comandos com o intuito de fazer uma função que fizesse qualquer letra ficar maiúscula. Mas eu não entendi a parte em NEGRITO. Algum ninja aí poderia me explicar? Desde já, Obrigado! #include <stdio.h> #include <stdlib.h> int x_toupper(char ch) { if (ch>='a'&& ch<='z') return ch + 'A'- 'a'; <----- ESSA LINHA else return ch; } int main() { char c; while (1) { c=getchar(); putchar(x_toupper(c)); } return 0; }
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