0

嗨,我正在尝试让我的 C 控制台程序在不同颜色之间闪烁,以向用户表示警告。但是每次我启动程序时,下一个 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;
}
4

0 回答 0