Por que me hace esto

madarikatua
27 de Abril del 2006
Hola, estoy aprendiendo por mi cuenta C, y por ahora lo llevo bastante bien.
Aunque me ha surgido una duda, he creado este condigo y funciona

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
int seg =0, inicio;
int imprime = 1;
int resta =5;
inicio =seg;
do{
do{
seg = clock();
}while (seg - inicio < 1000);
if (seg/1000 == imprime){
system ("cls");
printf ("\tEl programa se cerrara en: %d\n", resta);
imprime ++;
resta--;
}
}while (seg/1000 < 6);
return;
}

Pero cuando lo modifico y le añado cualquier entrada por el teclado por ejemplo scanf o cualquier otro no funciona.
Adjunto codigo para ejemplo.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
int seg =0, inicio;
int imprime = 1;
int resta =5;
int opcion;
printf ("Teclea un numero entre 1 - 9 y pulsa enter\n");
scanf ("%i", &opcion);
fflush (stdin);
inicio =seg;
do{
do{
seg = clock();
}while (seg - inicio < 1000);
if (seg/1000 == imprime){
system ("cls");
printf ("\tEl programa se cerrara en: %d\n", resta);
imprime ++;
resta--;
}
}while (seg/1000 < 6);
return;
}
Alguien podría decirme porque me pasa esto, gracias

chucho1141
27 de Abril del 2006
Tal vez sea por que la convencion de formato en el scanf este erroneo, veo que utilizas %i que es para unsigned's, prueba dejando el %d (para enteros)