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

[Urgente] Problema con getchar y while.

Estas en el tema de [Urgente] Problema con getchar y while. en el foro de C/C++ en Foros del Web. Muchas gracias por leer mi mensaje. Aqui os dejo el bloque de codigo con problemas en cuestion: El problema en si es en el primer ...
  #1 (permalink)  
Antiguo 01/11/2007, 07:54
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 17 años, 4 meses
Puntos: 0
[Urgente] Problema con getchar y while.

Muchas gracias por leer mi mensaje. Aqui os dejo el bloque de codigo con problemas en cuestion:
El problema en si es en el primer while. La primera vez que entro al do puedo hacer todo bien. Pero cuando selecciono Nueva Insercion me pone :Ingrese nombre del agente intoxicante y enseguida el Ingrese las medidas.... Y no me deja poner el nombre del agente intoxicante, y eso que la condicion del while se cumple asi que deberia dejarme.
Es para un trabajo de la Uni.
Gracias de antemano.

Código:
do
                  {
                      i = 0;
                      // FORMULARIO DE INGRESO DE AGENTE
                      system("CLS");
                      printf("Ingrese el nombre del agente intoxicante: ");
                      while((c = getchar()) != '\n')
                      {
                               agente[i++] = c;
                      }
                      agente[i] = '\0';
                      
                      if(Insertar(&Agentes,agente))
                      {
                          char medidas[30001];
                          
                          strcpy(strcat(agente,".txt"),agente);
                          FILE * archivo;
                          if(archivo = fopen(agente,"w+"))
                          {
                                     printf("\nEscriba las medidas para la desintoxicacion\n");
                                     printf("Maximo 3000 caracteres. Finalice con '#':\n\n");
                          
                                     while((d = getchar()) != '#')
                                     {
                                              fputc(d,archivo);
                                     }
                                     fputc('\0',archivo);
                                     fclose(archivo);
                                     printf("\nInsercion realizada con exito\n\n");
                          }
                          else
                          {
                              // ERROR DE LECTURA
                          }
                      }
                      else
                      {
                          printf("\nEl agente intoxicante ya existe\n\n");
                      }
                      
                      c = d = 'a';
                      printf("1.- Nueva insercion\n");
                      printf("2.- Volver");
                  } while ((subOp = getch()) == '1');
  #2 (permalink)  
Antiguo 01/11/2007, 09:27
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: [Urgente] Problema con getchar y while.

Nadie? Porfavor, estoy desesperado, he intentado de todo.
  #3 (permalink)  
Antiguo 01/11/2007, 09:46
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: [Urgente] Problema con getchar y while.

Ya lo solucione, solo habia que hacer un fflush, gracias por sus respuestas.
  #4 (permalink)  
Antiguo 01/11/2007, 09:48
 
Fecha de Ingreso: octubre-2007
Mensajes: 10
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: [Urgente] Problema con getchar y while.

HOla,

Te iba a responder justo ahora: getch() no es una función estándar, y probablemente, sólo lea el carácter 1 y no el enter que metes a continuación. Con fflush lo que haces es borrar el enter antes de comenzar el while....

De todas formas, a lo mejor te conviene usar algún mecanismo de entrada/salida más estándar que getch :)

Saludos
  #5 (permalink)  
Antiguo 01/11/2007, 10:04
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: [Urgente] Problema con getchar y while.

No use getch(), use getchar() y me va de lujo
  #6 (permalink)  
Antiguo 01/11/2007, 11:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 10
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: [Urgente] Problema con getchar y while.

Perdona que te contradiga, pero usas getch() al final del bucle, cuando escoges opción, y creo que, al no ser getch() estándar, existe la posibilidad de que el "enter" que presionas después del 1 se quede en el buffer y sea lo que lees con getchar(). Por eso al hacer fflush() se arregla todo, ya que fflush() borra el enter que metes después del 1 y que getch() no lee.
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 18:11.