сравнивая возвращаемое значение fgetc () со случайной цифрой - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь прочитать файл, пока не наберу случайное целое число от 1 до 5, а затем прочту слово рядом с этим целым в массив.Прежде чем пытаться сравнить случайное int с возвращаемым значением fgetc (), код работал хорошо (он считывал символы в массив до конца строки).Теперь, когда я нахожусь в отладчике, я вижу, что возвращаемое значение fgetc () для целых чисел, которые я ищу, является десятичным значением ASCII, а не фактическим целым числом.Поэтому, когда я сравниваю со случайным int, он никогда не обнаруживается.Я не понимаю, как сделать это правильно.Вот код, извините за комментарии на французском языке, они не актуальны.

int lectureMot(FILE *listePtr, char motsecret[])
{
    int caracLu;
    int nbLettres = 0;
    int numRand;
    numRand = rand()%((6-1)+1);

    /*Ouverture du fichier texte de la liste*/
    listePtr = fopen("Liste.txt","r");

    /*Verification de l'ouverture du fichier*/
    if (listePtr == NULL)
    {
        printf("Erreur a l'ouverture de la liste");
        return(EXIT_FAILURE);
    }
    else
    {
        /*Lire jusqu'au nombre random*/
        while((caracLu = fgetc(listePtr)) != numRand);

        /*Lire le mot et le mettre dans le tableau*/
        while((caracLu = fgetc(listePtr)) != '\n')
        {
            motsecret[nbLettres] = (char)caracLu;
            nbLettres = ++nbLettres;
        }
    }
    /*Fermeture du fichier liste*/
    fclose(listePtr);
    return nbLettres;
}

1 Ответ

0 голосов
/ 16 сентября 2018

Просто добавьте символ «0» к вашей цифре:

Измените

numRand = rand()%((6-1)+1);

на

numRand = (rand()%((6-1)+1)) + '0';
...