Dev - C++ - CREANDO PASSWORD CON CHAR

 
Vista:
Imágen de perfil de Kevin

CREANDO PASSWORD CON CHAR

Publicado por Kevin (17 intervenciones) el 30/06/2015 04:20:00
Hola a todos, tengo un pequeño problema... estoy intentando hacer por mi cuenta una especie de canjeo de codigos para que os hagais una idea como la compra con "PAYPAL". Mi dificultad se encuentra en que quiero introducir una palabra donde pone INGRESE CODIGO y solo he podido conseguir esto que funcione con un solo caracter (char). Alguien me puede solucionar esto? Estoy bloqueado, un saludo y gracias



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
int main(){
 
 
//VARIABLE CODIGOS
     int codigo,co=0;
     //la variable co es para que no se pueda repetir los codigos
 
 
      //VARIABLES CLAVE CODIGOS
    char nombrepass;
    int numeropass;
 
 
 
 
 
if(co>=1){
 
      system("COLOR F");
printf("            ____________________________________________________      \n");
printf("   ________%c     __ _        __ _  _     __ _  _ ___ __ _      %c________\n",179,179);
printf("   %c       %c    /  |_||%c|  ||_ |_||_)   /  / %c| %c | /__/ %c     %c       /\n",92,179,92,92,92,92,179);
printf("    %c      %c    %c__| || |%c_||__| || %c   %c__%c_/|_/_|_%c_|%c_/     %c      /\n",92,179,92,92,92,92,92,92,92,179);
printf("    /      %c___________________________________________________%c      %c\n",179,179,92);
printf("   /__________)                                             (__________%c\n\n\n",92);
 
        printf("\t\tLos codigos solo pueden ser canjeados una vez.\n\n\n");
        printf("\n\n Cantidad de codigos: %d \n\n\n",co);
        printf("\t\t%c Ingrese el codigo: ",254);
        scanf("%s",&nombrepass);
        printf("\n");
        printf("\t\t%c Ingrese el pasword: ",254);
        scanf("%d",&numeropass);
 
 
            printf("\n");
            if( numeropass == 2294 && nombrepass== 'w' || numeropass == 1234 && nombrepass== 'e'){
                system("cls");
                system("COLOR B");
        printf("\n\n\n");
        printf("\t\tEl codigo es correcto!\n\n");
 
                printf("\n");
 
 
co--;
break;
 
 
 
            }else{
                printf("\n\n");
                system("cls");
                system("COLOR C");
                printf("\n\n\t\t\t     _\n");
                printf("\t\t\t    /_|  /  _   _  _/  _  |\n");
                printf("\t\t\t   (  | (  (-  /   /  (/  .\n");
 
 
                printf("\n\n\n\n\t\tSu codigo o password, son incorrectos.\n\n",164);
                Sleep(1500);
                system("cls");
                break;
            }
 
 
 
    }else(co<=0);
  printf("No tienes codigos para canjear.");//final password
break;
 
 
 
          system("PAUSE");
  return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de vangodp
Val: 73
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

CREANDO PASSWORD CON CHAR

Publicado por vangodp (287 intervenciones) el 03/07/2015 16:17:47
para leer un string se hace char nombrepass[100]; y luego se lee: scanf("%s",nombrepass);. Solo se puede guardar 100 - 1 caracteres, o sea 99, el ultimo nuca debes sobrescribirlo, o dará error ya que que scanf pone siempre un carácter nulo al final de un string para indicar que es el fin de la cadena, si pones las cien letras el programa va poner en la 101 el nulo dando así un error, hay que destacar que para leer strings no hay que poner el operador de referencia (&), ya en los char, int, float, etc sí que se pone, eso es así porque el proprio nombre de un array es considerado como un puntero que indica la dirección donde inicia la cadena, para que te hagas una idea, eso scanf("%s",nombrepass); es lo mismo que eso scanf("%s",&nombrepass[0]);.

Entonces si has pillado el rollo, el problema lo tienes en la linea 32. Da erro por poner & adelante de nombrepass. ;)

Y otra cosa... para comparar nombrepass con una cadena literal o con otro string hay que usar strcpy(nombrepass, "1234"); o strcpy(nombrepass, otroString);. Lógicamente se usa if() para ello.

Un ejemplo de como comparar una cadena es:

//incluir string.h

//dentro de main...
char clave[100] = "anothercode";
char temp[100] = {0};

scanf("%s", clave);

if (strcpy( temp, clave ) == 0 ){
//imprime que son iguales
}else{
//fail
}
//FIN


Si estuviera en c++ y usaras el tipo string podrías hacer directamente if ( temp == clave ), pero con tipo c_string no puedes hacer eso, debes usar strcpy() o implementar tu un método para comparar cada letra.

espero que sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Kevin

CREANDO PASSWORD CON CHAR

Publicado por Kevin (17 intervenciones) el 03/07/2015 17:02:28
Si si ya lo arregle, no cai en strcpy(nombrepass, "1234") al día siguiente solo levantarme me acorde y fue perfectamente, ahora ya tengo el pequeño minijuego completo e incluso he hecho que cargue y guarde partida, ahora lo estoy pasando a 2D ya tengo alguna cosa hecha pero si verdaderamente es un incordio jajajaja sobretodo en el caso de pasar el switch a imagen y que enlace con el resto que he hecho se me esta complicando, habrá que ponerle horas al tema a ver si saco algo de provecho y consigo pasar mi pequeño minijuego en c++ a 2D con codeblocks. Un saludo y gracias otra vez por tus aportaciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar