Hola a todo el foro.
Me he encontrado con un error al ejecutar un ciclo
do while , para que alguien pueda hacerme ver la falta en la que estoy incurriendo colocaré el codigo a continuación:
#include<stdio.h>
#include<conio.h>
char res;
char palabra[20];
int main()
{
do
{
clrscr();
printf("Escribe tu nombre ");
scanf("%s",&palabra);
printf("hola %s",palabra);
gotoxy(20,22);
printf("desea continuar ... s/n ");
scanf("%c",&res);
}while (res=='s' || res=='S');
printf("bien...");
puts("Bye...");
getch();
return 0;
}
Bien, el error consiste en que al ejecutar dicho programa las instrucciones dentro del ciclo se ejecutan en su totalidad unicamente la primera vez, es decir, en el primer recorrido del ciclo, en las siguiente repeticiones solo despliega los letreros y me ignora los
scanf,
y yo ignoro porque suceda esto, el programa no tiene errores estructurales y creo que logicos tampoco, pero no doy con este problema.
Quiero mencionar que esto lo he notado con la estructura
do while y tambien con la
while, el problema momentaneamente lo he solventado escribiendo la condicion de esta forma
do {
....
}while(getch()==115)
Asi, funciona perfectamente, pero la verdad sigo sin comprender porque con la primera forma las lineas
scanf no se ejecutan como debe ser, es decir, no esperan a que se ingresen datos por teclado.
Por ultimo quiero comentar que este programa lo he ejecutado en un Borland C++ 1.01 (bastante antugüo) y tambien C++3.0.
Gracias por su ayuda y sus comentarios, un saludo para todos.