Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anajulia829 en 9 Septiembre 2013, 19:50 pm



Título: tengo un problema aparentemente tonto pero que me esta rompiendo el coco!!!
Publicado por: anajulia829 en 9 Septiembre 2013, 19:50 pm
ngrese
for(i=0;i<20;i++)
{
printf("Ingrese posicion %d de cedula: ",i);
scanf(" %c",&cedula);
vectorced=cedula;
}
SUPUESTAMENTE ES UNA TONTERIA PERO NO LE ENCUENTRO SOLUCION, SI TENGO ESTE TROZO DE CODIGO, POR QUE AL EJECUTARLO ME APARECE ESTO
ingrese posicion 1 cedula: ingreso a y le doy enter
aparece
ingrese posicion 2: ingrese posicion 3 : ingreso b y le doy enter aparece...
ingrese posicion 4: ingrese posicion 5 : ingreso b y le doy enter aparece...
y asi etc etc
EN TOTAL INGRESO 10 VECES CARACTERES, SI LE DOY SOLAMENTE ENTER Y NO CARACTER MAS ENTER, EL CODIGO SE EJECUTA COMO QUIERO Y SI DEFINO LA ENTREDA DEL VECTOR COMO UN ENTERO, NO ES LO QUE NECESITO, TAMBIEN INGRESO ENTERO Y LE DOY ENTER Y EL CODIGO EJECUTA LO MAS BIEN...COMO HAGO
GRACIAS!!!!


Título: Re: tengo un problema aparentemente tonto pero que me esta rompiendo el coco!!!
Publicado por: El Benjo en 9 Septiembre 2013, 21:13 pm
He probado tu código en Dev C++ y a mí me funciona a la perfección. ¿Ese es todo el código o hay más, de ser quizá el error está en otra parte (aunque es poco probable).

¿Qué compilador y S.O. utilizas?

(http://i.elhacker.net/i?i=7_pJu2kR3MZRTyK-Jeh3IGVo) (http://i.elhacker.net/d?i=7_pJu2kR3MZRTyK-Jeh3IGVo)

Te adjunté un screenshot para que veas el código con la aplicación corriendo.

EDITADO: Escribe el código completo junto con la declaración de variables. No sé por qué pero presiento que tu fallo viene desde ahí.  :rolleyes:


Título: Re: tengo un problema aparentemente tonto pero que me esta rompiendo el coco!!!
Publicado por: anajulia829 en 9 Septiembre 2013, 22:20 pm
lo probe ahora en el trabajo y funciona bien!!!...no entiendo!!!! en la notebook lo probe en dev c++ y c y me anduvo mal!!! sera que tiene virus???


Título: Re: tengo un problema aparentemente tonto pero que me esta rompiendo el coco!!!
Publicado por: rir3760 en 10 Septiembre 2013, 03:59 am
Código
  1. for (i = 0; i < 20; i++){
  2.   printf("Ingrese posicion %d de cedula: ",i);
  3.   scanf(" %c", &cedula);
  4.   vectorced[i] = cedula;
  5. }
SUPUESTAMENTE ES UNA TONTERIA PERO NO LE ENCUENTRO SOLUCION, SI TENGO ESTE TROZO DE CODIGO, POR QUE AL EJECUTARLO ME APARECE ESTO
ingrese posicion 1 cedula: ingreso a y le doy enter
aparece
ingrese posicion 2: ingrese posicion 3 : ingreso b y le doy enter aparece...
ingrese posicion 4: ingrese posicion 5 : ingreso b y le doy enter aparece...
y asi etc etc

EN TOTAL INGRESO 10 VECES CARACTERES, SI LE DOY SOLAMENTE ENTER Y NO CARACTER MAS ENTER, EL CODIGO SE EJECUTA COMO QUIERO
Al llamar a scanf utilizas la cadena de formato " %c", con ella no hay problema y no puede presentarse el comportamiento que mencionas.

Tu problema fue que en algun momento cambiaste esa cadena de formato a "%c" eliminado el espacio antes del caracter '%'. Con esa cadena de formato la funcion leera el primer caracter que encuentre sin importar cual. Por ejemplo si tecleas:
Código:
a{ENTER}
La funcion procesa el caracter 'a' y retorna, en la segunda iteracion del bucle el caracter que se procesa es el avance de linea '\n' generado al presionar la tecla {ENTER} y que se encuentra en el bufer de la entrada estandar. Ello da, como describes, la apariencia de "saltarse una lectura".

Un saludo