tengo un problema aparentemente tonto pero que me esta rompiendo el coco!!!

Iniciado por anajulia829, 9 Septiembre 2013, 19:50 PM

0 Miembros y 1 Visitante están viendo este tema.

anajulia829

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!!!!

El Benjo

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?



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:
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

anajulia829

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???

rir3760

Cita de: anajulia829 en  9 Septiembre 2013, 19:50 PMfor (i = 0; i < 20; i++){
   printf("Ingrese posicion %d de cedula: ",i);
   scanf(" %c", &cedula);
   vectorced[i] = 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
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:
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language