Ir ao conteúdo
  • Cadastre-se
Nathan89

C Impedir que o usuário utiliza um nome salvo em um arquivo

Recommended Posts

No algoritmo que estou fazendo, um cadastro em algum jogo, o usuário não pode usar o nome de algum já personagem já existente no jogo, então tenho que ter um aquivo com alguns nomes já listado, mas não consigo fazer ele listar os nomes separadamentes e impedir que o usuário utilize algum desses nomes.
Quem puder ajudar, agradeço 

 

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <locale.h>
#include <conio.h>



	char nada[999];
	int	forca=0,des=0,power=0,defesa=0;
	int	a=0,b=0,c=0,d=0;
	int i,i3,i5;
	int resultado;
	char nomeUsu [12] = " ";
	char personagem [12] = " " ;
	char senha1 [12] = " ";
	char senha2 [12] = " "; 
	char conf [12];
	char final;
	char continuar =' ';
	

void pegaNome()
{
	system ("cls");
	
	printf("Digite enter para inicar");
	scanf("%c", &nada),
	system ("cls");
	
	printf("Informe seu nome: ");
	gets(nomeUsu);
	
	printf("\nInforme o nome do personagem: ");
	gets(personagem);
	
		
}

void pegaSenha()
{
	
	senha1 [12]= ' ';
	senha2 [12]= ' ';
	
	printf("\nCrie uma senha: ");
	gets(senha1);
	
	printf("\nInforme novamente a sua senha: ");
	gets(senha2);
}
	
int soma(int a,int b, int c, int d){
	
	int resultado;
	resultado = a+b+c+d;
	return(resultado);
}

void pegaPonto()
{
	while(i3 != 1){	
	forca=0,des=0,power=0,defesa=0;
		system ("cls");
		
	printf("Cadastrar Atributos/n (você tem 15 pontos para distribuir entre 4 atributos)\n");
	
	printf("Defina a sua força: ");
	while(forca==0){
	scanf("%d", &forca);
	if(forca==0){
		printf("Nenhum dos seus atributos pode ser igual a zero \nDefina a sua força: ");
	}
	}
	
	printf("Defina a sua destreza:");
	while(des==0){
	scanf("%d", &des);
	if(des==0){
		printf("Nenhum dos seus atributos pode ser igual a zero \nDefina a sua destreza: ");
	}
	}
	
	printf("Defina o seu poder mágico:");
	while(power==0){
	scanf("%d", &power);
	if(power==0){
		printf("Nenhum dos seus atributos pode ser igual a zero \nDefina o seu poder mágico:  ");
	}
	}
	
	printf("Defina a sua defesa: ");
	while(defesa==0){
	scanf("%d", &defesa);
	if(defesa==0){
		printf("Nenhum dos seus atributos pode ser igual a zero \nDefina a sua defesa:  ");
	}
	}
	

	
 	resultado = soma(forca,des,power,defesa);
 	
 	
	 if(resultado == 15){
		printf("Pontos cadastrados com sucesso\n");
			gets(nada);
			break;
					
	}else if(resultado <=14){
		printf("PONTOS FALTANDO \n");
		continuar = 'n';
		system("pause");
		
	}else if(resultado >= 16){
		printf("Os pontos de atributos passaram de 15\n ");
		continuar = 'n';
		system("pause");
		
}

}
}



int main()
{
	setlocale(LC_ALL, "portuguese");
	system ("cls");
	int i2=0;
	while(i2 = 1){
	
	while(i5 = 1){
	
	pegaNome();
	
	FILE *file;
	file =fopen("string.txt", "r");
	char frase[10][100];
	int i4;
	for (i4=0; i4<10 && fgets(frase[i4], 100, file) != NULL; i4++){
    printf("%s", frase[i4]);
    
    if (personagem==frase[100]){
    	break;
	}
}
    
	
	while(i = 1){
	pegaSenha();
	if ( strcmp (senha1,senha2) == 0 ){
		printf("\nSenha salva com sucesso!!!\n");
		break;
			gets(nada);
	}else if (senha1 != senha2){
		printf("\nA senha digitada está errada, informe-a novamente.\n");
		gets(nada);
		system("cls");
	}
}

	pegaPonto();
	

	
	system("cls");
	printf("CONFIRMAÇÃO DO CADASTRO");
	printf("\nNome do usuário: %s", nomeUsu);
	printf("\nNome do personagem: %s", personagem);
	printf("\nSua senha: %s", senha1);
	printf("\n\nSeus atributos");
	printf("\nForça: %d", forca);
	printf("\nDestreza: %d", des);
	printf("\nPoder mágico: %d", power);
	printf("\nDefesa: %d\n", defesa);
	
	printf("\ns para confirmar o cadastro, n para refazer\n");
	scanf("%c", &final);
	if(final =='s'){
	break;
	}
	else if( final == 'n'){
		i2 = i2 +1;
	}
	else {
		printf ("sim ou não");
		i2 =i2 + 1;
	}
	
}
}
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Nathan89        na hora de ler o arquivo você está pegando uma linha inteira e até o caractere newLine ( " \n "  ) e imprimindo essa mesma linha , por isso ele imprime tudo junto , e depois comparando com o caractere que está na posição 100 dessa linha com uma palavra , então seria melhor usar o comando fscanf que pega apenas uma palavra de cada vez , e também você esqueceu de fechar o arquivo depois da leitura , então seu código com algumas modificações poderia ser assim   :

#include <stdio.h   >
#include <stdlib.h  >
#include <string.h  >
#include <locale.h  >
#include <conio.h   >
#include <ctype.h   >
#include <windows.h >

char nada[999];
int	 forca, des,power,achou,defesa;
int	 a,b,c,d, i, i3,i5=1,resultado;
char nomeUsu[12]   ,personagem[12];
char senha1[12]    ,    senha2[12];
char con[12],finali,continuar =' ';

void pegaNome(){
	system("cls");
	printf("Informe seu nome -------------: ");
	fflush(stdin);
	gets(nomeUsu);
	printf("Informe o nome do personagem -: ");
	fflush(stdin);
	gets(personagem);
	printf("\n");
}

void pegaSenha(){
	printf("\nCrie uma senha ----------------: ");
	fflush(stdin);
	gets(senha1);
	printf("Informe novamente a sua senha -: ");
	fflush(stdin);
	gets(senha2);
}

void pegaPonto(){
    char msg[50];
    strcpy(msg,"Nenhum dos seus atributos pode ser igual a zero\n");
	while( 1 ){
	    forca=0,des=0,power=0,defesa=0;
		system ("cls");

	    printf("Cadastrar Atributos\n");
	    printf("( você tem 15 pontos para distribuir entre 4 atributos )\n");

	    while(forca==0){
            printf("Defina a sua força --------: ");
            fflush(stdin);
	        scanf("%d", &forca);
	        if(forca==0)printf( msg );

	    }

	    while(des==0){
            printf("Defina a sua destreza -----: ");
            fflush(stdin);
	        scanf("%d", &des);
            if(des==0)printf( msg );
	    }

	    while(power==0){
            printf("Defina o seu poder mágico -: ");
            fflush(stdin);
	        scanf("%d", &power);
	        if(power==0)printf( msg );
	    }

	    while(defesa==0){
            printf("Defina a sua defesa -------: ");
            fflush(stdin);
	        scanf("%d", &defesa);
	        if(defesa==0)printf( msg );
	    }

 	    resultado = forca + des + power + defesa;

	    if(resultado == 15){
		    printf("\nPontos cadastrados com sucesso !\n    Tecle -%c ",16);
            getch();
            break;
	    }
	    else
            if(resultado < 15){
		        printf("PONTOS FALTANDO \n");
		        system("pause");
	        }else
	            if(resultado > 15){
                    printf("Os pontos de atributos passaram de 15\n ");
                    system("pause");
                }
    }
}
int main(){
	setlocale(LC_ALL, "");
    while( 1 ){
        do{
            pegaNome();
            char frase[10][100];
            char nom[30],per[30];
            achou=0;
            FILE *file =fopen("string.txt", "r"     );
            while(fscanf(file, "%s" ,&nom)!=EOF     &&
                  fscanf(file, "%s" ,&per)!=EOF)     {
                  printf("Nome --------: %s\n"  ,nom);
                  printf("Personagem --: %s\n\n",per);
                  if(strcmp(per,personagem)==0)      {
                      achou = 1;
                      printf("Esse Personagem ja existe , escolha outro    Tecle");
                      getch();
                      break;
                  }
            }
            fclose(file);
        }while( achou );
        while( 1 ){
            pegaSenha();
            if( strcmp(senha1,senha2) == 0 ){
                printf("\nSenha salva com sucesso!!!      Tecle\n");
                break;
                getch();
            }else{
                printf("\nA senha digitada está errada, informe-a novamente.   Tecle\n");
                getch();
                system("cls");
            }
        }
        pegaPonto(                                      );
        system("cls"                                    );
        printf("CONFIRMAÇÃO DO CADASTRO  \n"            );
        printf("Nome do usuário -----: %s\n", nomeUsu   );
        printf("Nome do personagem --: %s\n", personagem);
        printf("Sua senha -----------: %s\n", senha1    );
        printf("Seus atributos\n\n"                     );
        printf("Força ---------------: %d\n", forca     );
        printf("Destreza ------------: %d\n", des       );
        printf("Poder mágico --------: %d\n", power     );
        printf("Defesa --------------: %d\n",  defesa   );

        printf("\n\n S - Confirmar o cadastro\n"        );
        printf(" N - Refazer \n               %c\n",179 );
        printf("               %c\n",31                 );
        printf("               "                        );
        finali = getche(                                );
        printf("\n\n"                                   );
        if(toupper(finali) == 'S') break                 ;
    }
    Sleep(1000                                          );
}

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×