prog.c:42:27:错误:调用对象类型'int'不是函数或函数指针

时间:2016-03-20 17:59:06

标签: c++ pointers

我在使用指针时遇到了麻烦,我刚刚开始学习,所以对我的一个错误的任何帮助都会很棒。这是一个猜谜游戏,用户必须猜测1到1000之间的随机数。

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

//Function Prototypes
int usein (int ran_num);
int usein2 ();
int again;

int main (void)
{
    //Declare Variables And Pointer
    int again = 1;
    int *ranum;
    int ranum1, invinp;

    //Random Number
    srand(time(0));

    //To Repeat
    do
    {
        ranum1 = rand() % 1001;
        ranum = ranum1;

        invinp = usein (ranum);

        if (invinp == 1)
        {
            puts ("Cya");
            again = 0;
        }
        else
            again = *again();

这就在上面。

    }
    while (again ==1);

    return 0;
}

/*************************function usein*************************/
int usein (int ran_num)
{
    //User Input
    int usenum;
    int reval = 0;

    printf ("Enter a guess.\n");
    scanf ("%i", &usenum);

    //Invalid Input
    while (usenum > 1000 || (usenum < 0 && usenum != -1))
    {
        printf ("It doesn't work like that... Try a number from 1 to 1000.\n");
        scanf ("%i", &usenum);
    }

    if (usenum == -1)
        reval = 1;
    else
    {
        if (usenum > *rand)
        {
            puts ("Too high. Go down.");
            usenum = usein2 ();
            if (usenum == -1)
                reval = 1;
        }
        else if (usenum < *rand)
        {
            puts ("Too low. Go up.");
            usenum = usein2 ();
            if (usenum == -1)
                reval = 1;
        }
        else if (usenum = *rand)
            puts ("Congrats. You guessed correctly!");

    }
    return reval;
}

/*************************function usein2*************************/
int usein2(int ran_num)
{
    //User Input
    int usenum;

    printf ("Enter a guess.");
    scanf ("%i", &usenum);

    while (usenum > 1000 || usenum < 0)
    {
        printf ("Try again dude.");
        scanf ("%i", &usenum);
    }

    return usenum;
}

/*************************function again*************************/
int again1()
{
    char question;

    printf ("You wanna go again?\n");
    getchar ();
    question = getchar ();

    while (question != 'Y' && question != 'y' && question != 'n' && question != 'N')
    {
        printf ("Try again.\n");
        getchar ();
        question = getchar ();
    }
}

1 个答案:

答案 0 :(得分:1)

int again;声明一个整数,而不是函数。您在下面实际定义的功能名为again1。当您尝试从main调用again()时,它会抱怨您尝试调用的函数不是函数,这是正确的,因为againint。改为呼叫again1(或者更好的是,给它一个不错的名字)。同时从*中移除*again(),没有任何意义,因为没有任何解除引用的内容。 again1实际上还没有返回 int,因此这将是下一个需要解决的问题。您的代码中还有其他几个问题会阻止它工作,最明显的是*rand的所有用法 - 我不知道您希望它做什么,但它不会这样做。