将fgetc()的返回值与随机数字进行比较

将fgetc()的返回值与随机数字进行比较,c,random,char,C,Random,Char,我试图读取一个文件,直到我找到一个介于1和5之间的随机整数,然后将该整数旁边的单词读入数组。在尝试将随机int与fgetc()的返回值进行比较之前,代码运行良好(它将字符读入数组,直到行尾)。现在,当我在调试器中时,我看到我要查找的整数的fgetc()返回值是ASCII十进制值,而不是实际的整数。所以当我和随机整数比较时,它永远不会被找到。我不明白如何才能把这件事做好。这是代码,很抱歉评论是法语的,它们不相关 int lectureMot(FILE *listePtr, char motsecr

我试图读取一个文件,直到我找到一个介于1和5之间的随机整数,然后将该整数旁边的单词读入数组。在尝试将随机int与fgetc()的返回值进行比较之前,代码运行良好(它将字符读入数组,直到行尾)。现在,当我在调试器中时,我看到我要查找的整数的fgetc()返回值是ASCII十进制值,而不是实际的整数。所以当我和随机整数比较时,它永远不会被找到。我不明白如何才能把这件事做好。这是代码,很抱歉评论是法语的,它们不相关

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;
}

只需将“0”字符添加到数字:

改变

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


谢谢你,我觉得没有想到这个很愚蠢哈哈。你可以加上
'0'
更明确一点,而不是在你的代码中有一个看似随机的48
rand()((6-1)+1)
不会生成随机数1-5,而是生成0-5。添加48而不是
'0'
不会通过许多代码审查。不能保证字符集使用ASCII。不要在代码中使用幻数!
numRand = (rand()%((6-1)+1)) + '0';