Dev - C++ - problemas con strftime y comparación en if

 
Vista:
Imágen de perfil de Tomas

problemas con strftime y comparación en if

Publicado por Tomas (1 intervención) el 21/02/2023 02:34:45
hola tengo esta pequeña duda estoy tratando de hacer una password dinámica para que ciertos usuarios no puedan tener acceso a una parte del funcionamiento de un proyecto, se me ocurrió que fuera con la fecha y la hora, todo va bien pero al tratar de colocar la comparación en un if, simplemente no me deja hacer la comparación de forma correcta, solo me manda a que es incorrecta, soy novato en este tipo de programación

este es el código que tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
time_t tiempo = time(0);
		struct tm *tlocal = localtime(&tiempo);
		char pass[128];
		/*la contraseña es dia, hora y mes*/
		strftime(pass,128,"%d%I%m",tlocal);
                /*Esto solo es para ver que salga lo que quiero*/
		printf("%s\n",pass);
 
		char psusa[128];
		printf("Coloca la Contraseña para Habilitar los puertos");
		printf("\n");
		printf("=> ");
		scanf("%s", &psusa);
 
		if (pass == psusa){
			printf("correcto");
		}else{
			printf("incorrecto");
		}
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

problemas con strftime y comparación en if

Publicado por Tomas (1 intervención) el 25/02/2023 22:26:05
Después de estar tratado y buscando me di cuenta de que a pesar de que las variables están exactamente iguales y pasaba al if por alguna razón el if decia que no eran iguales y esto fue ya que la variable del tiempo la consideraba como string, por lo que la variable que pone el usuario en este caso "psusa" la tuve que transformar a una variable string también y la comparación ahora la hago con un bool, de esta forma fue como funciono, se los dejo por si alguien le llega a servir...

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
using namespace std;
 
		time_t tiempo = time(0);
		struct tm *tlocal = localtime(&tiempo);
		char pass[7];
		/*la contraseña es dia, hora y mes*/
		strftime(pass,128,"%d%I%m",tlocal);
 
		char psusa[7];
		printf("Coloca la Contraseña para Habilitar los puertos");
		printf("\n");
		printf("=> ");
		scanf("%7s", &psusa);
		string psus = psusa;
 
		bool compara = pass == psus;
 
 
		if (compara){
			printf("correcto");
			system("cls");
			system("psus");
 
		}else{
			printf("incorrecto");
			printf(psus);
			system("pause");
		}
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
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

problemas con strftime y comparación en if

Publicado por Thanatos (199 intervenciones) el 26/02/2023 08:12:24
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
#include <stdio.h>   // printf(), scanf()
#include <string.h>  // strcmp()
#include <time.h>    // time_t, time(), tm, localtime()
 
#define SIZE 128
 
int main(void) {
	time_t tiempo = time(NULL);
	struct tm *tlocal = localtime(&tiempo);
	char pass[SIZE] = { 0 };
 
	/* La contraseña es día, hora y mes */
	strftime(pass, SIZE, "%d%I%m", tlocal);
 
	/* Esto sólo es para ver que salga lo que quiero */
	printf("%s\n", pass);
 
	char psusa[SIZE] = { 0 };
	printf("Coloca la contraseña para habilitar los puertos\n=> ");
	scanf("%127s", psusa);
 
	if (strcmp(pass, psusa) == 0) {
		printf("Correcto\n");
	} else {
		printf("Incorrecto\n");
	}
 
	return 0;
}
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