elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda de novato.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda de novato.  (Leído 1,395 veces)
javiiwk

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Duda de novato.
« en: 25 Septiembre 2014, 07:49 am »

Hola, lo que pasa es que jugando con c, quise hacer un programa que me siga pidiendo una contraseña hasta que la anote. el codigo es este:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   char x;
   char z="javi";
while(x!= z){
   printf("Ingrese su Password: ");
   scanf("%c", &x);
   
}
   system("pause");
   return 0;
}

Con variables enteras el programa me deja hacer lo que quiero, pero cuando intento usar caracteres, esto pasa:


Si me pudieran orientar en que tengo mal, o porque me sale asi, se los agradeceria mucho.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda de novato.
« Respuesta #1 en: 25 Septiembre 2014, 08:32 am »

primero que nada usa las etiquetas GeSHi al publicar codigo


tienes varios errores, no se como se te ejecuta, qué compilador usas?

bueno, a los errores
primero
Código
  1. char a='z';

el char SOLO contiene un valor de tipo caracter (comilla simple) para que contenga una cadena lo declaras como un array

es decir
Código
  1. char x[10];
  2. char z[10] = "javi";

eso trae un problema, los array no se pueden comprar directamente (especialmente porque los espacios sobrantes contienen "basura")

entonces tienes que usar una funcion para leerlo

por otro lado el scanf debe leer una cadena (string representada con %s) y no un char

la comparacion yo la haría

Código
  1. int i = 0;
  2. bool valido = true;
  3. for(i=0;i<10;i++){
  4.   if(x[i]!=z[i]){
  5.      valido=false;
  6.      break;//esto provoca la salida del for
  7.   }
  8.   if(z[i]!='\0'){//si se llego al final de la cadena
  9.      break;      
  10.   }
  11. }
  12.  

comparo la posicion i de 'z' y 'x' que deben ser iguales y el '\0' es porque las cadenas terminan en ese caracter, así que eso indica que llegué al final de la contraseña, entonces si x es diferente a z valido se vuelve falso y sale, si todo es igual, al llegar al \0 valido queda true y sale del for


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
javiiwk

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Duda de novato.
« Respuesta #2 en: 25 Septiembre 2014, 16:57 pm »

Uso Dev C++, no se si tendrías otro compilador que me recomendaras?
voy a probar eso que me pusiste, muchas gracias.

y perdón por lo del código, mas tarde me leeré las reglas.

En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda de novato.
« Respuesta #3 en: 25 Septiembre 2014, 17:23 pm »

Uso Dev C++, no se si tendrías otro compilador que me recomendaras?

Nota aclaratoria: Dev C++ no es un compilador, es un IDE (Entorno de desarrollo integrado). Los IDE están preparados para automatizar ciertas tareas, de tal forma que, por ejemplo, compilar sea tan sencillo como darle a un botón. Dev C++ creo que viene con el compilador mingw... que es un buen compilador... ahora bien, Dev C++ es un entorno que creo que lleva varios años sin mantenimiento, por lo que la versión de tu compilador será bastante antigua. Funcional... pero antigua.

Hoy en día tienes IDE bastante buenos, potentes y gratuitos. Yo quizás me decantaría por uno de los siguientes:

* code::blocks: Uno de los más conocidos. Es mucho más completo que el IDE que usas actualmente, aunque el echo de tener tantas opciones hace que manejarlo al principio pueda ser un poco complicado... pero con un poco de paciencia te haces con el. Uno de sus instaladores para Windows instala también una versión de mingw.

* QtCreator: El entorno es más sencillo que Code::blocks, la pega es que te instala el paquete de Qt y eso puede llegar a ocupar algún giga de disco. Qt es un framework que abarca desde interfaz gráfica de usuario a tratamiento de ficheros, sockets, hilos... ahora que si no lo vas a usar puede que no merezca la pena instalarlo.

Ambos entornos pueden trabajar con diferentes compiladores: mingw, msvc, ...

Todo es cuestión de probar y trastear :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
DUDA DE NOVATO
Ingeniería Inversa
hanns 3 3,410 Último mensaje 11 Marzo 2008, 16:53 pm
por Mintaka
Duda de Novato
Materiales y equipos
bl4ckf4lk0n 2 2,142 Último mensaje 19 Julio 2008, 21:55 pm
por zydas
Duda de un novato
Hacking
Panic0 6 5,843 Último mensaje 13 Mayo 2021, 05:57 am
por mchz
Duda de novato
Dudas Generales
emaksiwa 4 6,161 Último mensaje 7 Mayo 2022, 23:06 pm
por arthurozmh
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines