C/Visual C - Problema con programa buscador de claves

   
Vista:
Imágen de perfil de Victorio

Problema con programa buscador de claves

Publicado por Victorio (2 intervenciones) el 09/02/2018 02:54:42
Hola veran estoy haciendo un programa que sea capaz de buscar en un fichero con claves generadas aleatoriamente (las cuales son de longitud 8+'\0' y continen los caracteres 0-9 , a-z, A-Z). El problema es que
para mi cabeza el programa deberia funcionar, sin embargo no lo hace como a mi me parece que deberia hacerlo.

Aqui les dejo el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main(){
    char busqueda[9]; //String de 8 caracteres + \0
    printf("Password: ");
    scanf("%s", busqueda);
    int contador = 0;
    char registro[9]; //String de 8 caracteres + \0
    FILE *archivo = fopen("passwords.txt", "r");
    //Esquema de Búsqueda
    while (!feof(archivo) && registro != busqueda){ //Salir en el momento que se encuentre la busqueda
        fscanf(archivo, "%s", registro); //Escaneo para avanzar
        contador++;
    }
    fclose(archivo);
    if (registro == busqueda)
        printf("Password encontrada en la linea %d\n", contador);
    else
        printf("'%s' no se ha encontrado en las %d passwords generadas\n", busqueda, contador);
    return 0;
}



Cuando muestro los caracteres de registro y busqueda con un casting a entero, observo que coinciden, pero el programa no detecta la busqueda. ¿Donde esta el fallo?
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

Problema con programa buscador de claves

Publicado por Andrés (7 intervenciones) el 09/02/2018 11:07:23
Aún cuando el archivo esta vacio, se entra a la línea

1
printf("'%s' no se ha encontrado en las %d passwords generadas\n", busqueda, contador);

con el valor de contador 1

La comparación no usa strcmp.

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
 
#define NOMBRE_ARCHIVO "passwords.txt" 
 
int main(int argc, char* argv[]) {
 
	char busqueda[9];
 
	printf("Password: ");
	scanf("%s", busqueda);
 
	FILE *archivo = fopen(NOMBRE_ARCHIVO, "r");
 
	if(NULL == archivo) {
 
		printf("No se puede abrir %s\n", NOMBRE_ARCHIVO);
		exit(EXIT_FAILURE);
 
	}
 
	char registro[9];
	bool encontrado = false;
	int contador = 0;
 
	while((EOF != fscanf(archivo, "%s", registro)) && !encontrado) {
		encontrado = (0 == strcmp(registro, busqueda)) ? true : false;
		contador++;
	}
 
	if(EOF == fclose(archivo)) {
		printf("No se puede cerrar %s\n", NOMBRE_ARCHIVO);
		exit(EXIT_FAILURE);
	}
 
	if (encontrado) {
 
		printf("Password encontrado en la línea %d\n", contador);
 
	}else {
 
		printf("'%s' no se ha encontrado en las %d passwords generadas\n", busqueda, contador);
 
	}
 
	return EXIT_SUCCESS;
 
}
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

Problema con programa buscador de claves

Publicado por Tom (557 intervenciones) el 09/02/2018 11:09:06
El fallo está en que no sabes c.

https://www.google.es/search?q=tutorial+de+c
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
Imágen de perfil de Victorio

Problema con programa buscador de claves

Publicado por Victorio (2 intervenciones) el 10/02/2018 09:42:31
acabo de empezar a estudiarlo soy bastante noob de momento xDD (pd: que buen vacile lo del query)
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

Problema con programa buscador de claves

Publicado por Tom (557 intervenciones) el 10/02/2018 17:08:53
¿ Vacile ? Ni de lejos. Necesitas volver a empezar.
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