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");} }
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*/
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; }