Ir ao conteúdo
  • Cadastre-se

PenseC

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

Reputação

7
  1. 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á!
  2. @Lucca Rodrigues Obrigado, mano! Agora ficarei mais atento a essa diferença!!!
  3. 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.
  4. @Lucca Rodrigues AHHHHHHHHHHH, NÂOOOOOOO. T_T Obrigado,mano. Desculpe tomar seu precioso tempo com isso ^^'.
  5. 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!
  6. PenseC

    C Ler arquivos de texto em C

    @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.
  7. PenseC

    C Ler arquivos de texto em C

    @vangodp Não. Eu fiz o código no codeblock e copiei meu código e colei aqui ^^'. @Lucca Rodrigues Obrigado, mano. Ajudou bastante!
  8. 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 é:
  9. @devair1010 Muito obrigado!!!! Um ponto e vírgula que passa despercebido ferrou tudo hahaha valeu mesmo!
  10. 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.
  11. 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!!!
  12. 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

×
×
  • Criar novo...