2016-03-20 33 views
-1

我遇到了指針問題,我剛剛開始學習,所以對我的一個錯誤的任何幫助都會很棒。這是一個猜謎遊戲,用戶必須猜測1到1000之間的隨機數。prog.c:42:27:錯誤:調用的對象類型'int'不是函數或函數指針

#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

'again'不是一個函數,你想用'again()'做什麼?你的意思是再'1()'? – zneak

+1

'int again;'不是函數原型(靠近頂部)。另外,'int again1()'中沒有返回值。 –

回答

1

int again;聲明瞭一個整數,而不是函數。您在下面實際定義的功能名稱爲again1。當你嘗試從main調用again()時,它會抱怨你試圖調用一些不是函數的東西,這是因爲againint。改爲撥打again1(或者更好,給它一個體面的名字)。也從*again()中刪除*,這是沒有意義的,因爲沒有什麼可以解引用的。 again1也實際上並不返回int,所以這將是下一個要解決的問題。你的代碼中還有其他一些問題會妨礙它的運行,特別是*rand的所有用途 - 我不知道你希望做什麼,但它不會這樣做。

+0

對不起,我的錯誤只是愚蠢的錯誤 –

相關問題