Несколько консольных команд сбой кода
Привет! Я пытаюсь заставить мою консольную программу на С мигать разными цветами, чтобы предупредить пользователя. Но каждый раз, когда я запускаю программу, следующий fgets вылетает.
char vitesseOverdrive[5];
int vitesse = 0;
system("cls");
printf("\n\n------------------------- Warning ! ------------------------\n");
for (i=0;i<5;i++)
{
system("color 0c");
Sleep(300);
system("color 0a");
Sleep(300);
}
vitesse = SaisieNombre(vitesseOverdrive,sizeof(vitesseOverdrive)/sizeof(char));
Что может вызвать сбой программы? Есть ли лучший способ сделать это или это можно обойти?
информация: программа работает нормально, как только я помещаю эти строки в комментарии
Спасибо!
Редактировать: вот функция fgets()
int SaisieNombre(char *chaine,int a)
{
int i;
int j;
int nombre = 0;
int work = 0;
int marche = 0;
int reussi = 0;
char *endptr = NULL;
char *place = NULL;
do
{
work = 0;
reussi = 1;
marche = 1;
for (i=0;i<a;i++)
{
chaine[i] = 0;
}
if (fgets(chaine,a,stdin) != NULL)
{
if (strchr(chaine,'\n') != NULL)
{
place = strchr(chaine,'\n');
*place = '\0';
for (j=0;j<a;j++)
{
if (isdigit(chaine[j]) != 0 || chaine[j] == '\0' )
{
}
else
{
reussi = 0;
}
}
}
else
{
printf("\nLe nombre est trop long\n");
printf("\nVeuillez entrer un nombre : ");
marche = 0;
viderBuffer();
}
}
else
{
viderBuffer();
Sleep(2000);
exit(0);
}
if (reussi != 1)
{
printf("\nLa donnee n'est pas un nombre\n\n");
printf("Veuillez entrer un nombre : ");
}
nombre = strtol(chaine,&endptr,10);
if (*endptr == '\0')
{
work = 1;
}
else
{
work = 0;
}
}while (work != 1 || reussi != 1 || marche != 1);
return nombre;
}