/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

que no se caiga....

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
MasterKiller



Registrado: 26 Sep 2007
Mensajes: 13

MensajePublicado: 26/09/2007 1:07 pm
Título: que no se caiga....

Bueno amigos... este es mi primer post....
yo queria saber como puedo hacer que mi programa no se caiga o caiga en un loop al principio...

me piden ingresar datos...
tengo 2 opciones...
ingresar por [0]archivo o [1]teclado...
en este caso no se por archivo no nos piden.. asi que tira un error...
asi que se ingresa por teclado...
pero al ingresar una letra..
cae en un loop... un ciclo infinito...
porfavor... ayudenme...
este es el codigo que tengo...
se que tengoque validar.. pero e leido muchos temas de validacion aca y no entiendo nada!..:S
ayuda plz
gracias...

Código:
//------------------------------------------------
/*-----------------INGRESO DE DATOS---------------*/
int ingresodatos()
{
  int n;
  while(n!=1)
  {
   printf("\tComo desea ingresar los datos:\n[0]por archivo-\n[1]por teclado-  ");
   scanf("  %d",&n);
   if (n==0){printf("\n***LO SENTIMOS****\nEsta vez no se puede de esa forma\n\n");}
   else if((n!=1)&&(n!=0))
   {printf("\n***POR FAVOR***\nIngrese la opcion correcta\n");}
  }


Echo con Dev c++
Volver arriba
_Martin_



Registrado: 03 Ago 2006
Mensajes: 163

MensajePublicado: 26/09/2007 2:05 pm
Título:

Hola, debes inicializar la variable n. La defines y luego la comparas en el while y esto es peligroso ya que no sabes con certeza qué numero contiene al definirse. deberias hacer lo siguiente

Código:

int n;
n=0;   /*inicio la variable n a 0, pero puede ser otro valor*/


Saludos
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 241
Ubicación: Cono Sur

MensajePublicado: 26/09/2007 2:11 pm
Título:

Hola

Primero que nada, el título que pusiste no es muy conveniente. Lee bien las reglas del foro.

Volviendo a la pregunta, una manera de validar los datos de tu programa es ésta:
Código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
     char ch, strN[3];
     unsigned char e;
     do
     {
          printf("\tComo desea ingresar los datos:\n[0]por archivo-\n[1]por teclado-\n");
          scanf("%3s", strN);
          while((ch=fgetc(stdin))!=EOF && ch!='\n'); /* Reemplazo al no estandarizado fflush(stdin); */
          if(strlen(strN)>1)
          {
               puts("\n***POR FAVOR***\nIngrese la opcion correcta\n");
               e=1;
          }
          else if(strN[0]=='0')
          {     
               printf("\n***LO SENTIMOS****\nEsta vez no se puede de esa forma\n\n");
               e=1;
          }     
          else if(strN[0]=='1')
          {
               printf("\n LOS DATOS SE INGRESARAN POR TECLADO:\n");
               e=0;
          }
          else
          {
               puts("\n***POR FAVOR***\nIngrese la opcion correcta\n"); e=1;
          }
     }
     while(e==1);
     puts("\n");
     system("PAUSE");
     return EXIT_SUCCESS;
}

Un saludo
Volver arriba
MasterKiller



Registrado: 26 Sep 2007
Mensajes: 13

MensajePublicado: 26/09/2007 8:52 pm
Título:

Muchas gracias amigo...
y disculpa por lo que paso con lo del titulo...
gracias amigo!

bye
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com