Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con un programa básico

Estas en el tema de Problema con un programa básico en el foro de C/C++ en Foros del Web. Buenas, hoy me he puesto a aprender C, y he hecho esta chorradilla, que no me funciona. Yo creo que todo es correcto, he revisado ...
  #1 (permalink)  
Antiguo 09/12/2012, 16:53
 
Fecha de Ingreso: mayo-2012
Ubicación: Vigo, Galicia
Mensajes: 9
Antigüedad: 12 años
Puntos: 2
Problema con un programa básico

Buenas, hoy me he puesto a aprender C, y he hecho esta chorradilla, que no me funciona. Yo creo que todo es correcto, he revisado varias veces y no aparecen errores durante la compilación. Pero luego se queda el cursor parpadeando y da igual lo que escribas, no reacciona. Os pego el código a ver si alguien sabe la solución. Saludos.

Código:
#include <stdio.h>
 
int main()
{
	char usuario[30];
	char contrasena [30];

    while (usuario != "Xacobe" && contrasena != "olakease");
    {
    	printf("Introduce tu nombre de usuario: ");
    	usuario[30] = getche();
    	printf("Introduce tu contraseña: ");
    	contrasena[30] = getch();
    }

    return 0;
}
  #2 (permalink)  
Antiguo 09/12/2012, 17:41
 
Fecha de Ingreso: mayo-2012
Ubicación: Vigo, Galicia
Mensajes: 9
Antigüedad: 12 años
Puntos: 2
Respuesta: Problema con un programa básico

He encontrado parte del error. La linea del while no debe llevar ; o sera un bucle vacio.
  #3 (permalink)  
Antiguo 10/12/2012, 00:40
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema con un programa básico

Hola! ese codigo tiene mas de un error, nose de donde estas aprendiendo pero mi consejo es que busques algo mejor... Te marco los errores:


1° Si haces esto: usuario != "Xacobe" lo unico que estas haciendo es comparar punteros(tema q lo vas a entender mas adelante). Para comparar cadenas tenes que usar la funcion strcmp()


Código C:
Ver original
  1. usuario[30] = getche();
  2.         contrasena[30] = getch();
esas asignaciones estan mal. Las funciones getch() y getche(), ademas de no ser standard, se usan para el ingreso de un solo caracter. Para ingresar cadenas tenes la funcion scanf()


3° En el while intentas comparar cadenas pero los arreglos usuario y contrasena no tienen inicializados ningun valor, por lo tanto estas comparando con "basura"(toda variable no inicializada tiene basura). Lo correcto seria ingresar los datos y despues entrar al while



Intenta modificar algo de lo que te marque, sino segui preguntando. Saludos

PD: te recomiendo este libro "Programacion en C Metodologia, Algoritmos y Estructura de datos", sino los de Deitel&Deitel tambien son buenos
  #4 (permalink)  
Antiguo 11/12/2012, 14:35
 
Fecha de Ingreso: mayo-2012
Ubicación: Vigo, Galicia
Mensajes: 9
Antigüedad: 12 años
Puntos: 2
Respuesta: Problema con un programa básico

Muchas gracias amigo :) al final siguiendo lo que me dijiste y algun añadido de un amigo, me ha quedado esto http://ideone.com/cs2MB7 Saludos!

Etiquetas: funcion, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:44.