2010-07-22 61 views
1

如果我有這些功能:調用函數時出現問題?

void main(void) 
{ 
    char *menu[] = {"data", "coming", "here"}; 

    prints(**************); // here 

    printf("\n"); 

} 




void prints(char **menu) 
{ 
    int a; 
    while(*menu) 
    { 
     printf("%s", **menu); 
     menu ++; 
    } 

    a = 0; 
} 

如何調用打印功能???

+2

'打印(菜單)',但你忘了你的'menu'數組的末尾添加一個NULL元素,因爲這是什麼'印刷品'需要知道什麼時候打破循環。它也應該是'int main()',而不是'void main(void)' - 並且如果你的C編譯器沒有在後者抱怨,就扔掉它並找到一個更好的(例如gcc)。 – 2010-07-22 23:48:18

+2

我將開始在混淆的C比賽中使用'void main' - 它會自動讓人們注意到所有其他問題 – 2010-07-22 23:52:44

+0

Pavel Minaev tnx我將知道將來... 我的意思是如何從主I調用它意思是如何調用它使菜單數組獲得雙指針 所以我必須放在這裏 打印(**************); // Here – ScReYm0 2010-07-23 00:01:05

回答

0

在C中,你必須在使用它的另一個函數之前聲明你的函數。所以......

void prints(char **menu) 
{ 
    int a; 
    while(*menu) 
    { 
     printf("%s", **menu); 
     menu ++; 
    } 

    a = 0; 
} 

void main(void) 
{ 
    char *menu[] = {"data", "coming", "here"}; 
    prints(**************); // here 
    printf("\n"); 
} 

也就是說,也可以轉發聲明函數:

void prints(char **menu); 

void main(void) 
{ 
    char *menu[] = {"data", "coming", "here"}; 
    prints(**************); // here 
    printf("\n"); 
} 

void prints(char **menu) 
{ 
    int a; 
    while(*menu) 
    { 
     printf("%s", **menu); 
     menu ++; 
    } 

    a = 0; 
} 
+0

你是否想要翻轉這些功能? – 2010-07-22 23:49:58

+0

哈哈是的,我忘了添加一個關於轉發聲明的部分。 SO這樣的比賽。 – 2010-07-22 23:51:08

+0

我完全會第三編輯之前downvoted我自己的答案... – 2010-07-22 23:53:31

0

您可以移動上述mainprints功能,或者你可以把一個原型prints上述主要一樣所以:

void prints(char **menu); 

然後,您可以撥打printsmain就像任何其他本功能離子...

4

下面是幾個問題的一個版本定:

#include <stdio.h> 

// declare function before using it 
void prints(char **menu) 
{ 
    // make sure parameter is valid 
    if (menu != NULL) 
    { 
     while(*menu) 
     { 
      // spaces so they don't run together 
      // pass *menu not **menu to printf 
      printf("%s ", *menu); 
      menu ++; 
     } 
    } 
} 

// proper return type for main() 
int main(void) 
{ 
    // array terminator added 
    char *menu[] = {"data", "coming", "here", NULL}; 

    prints(menu); // here 

    printf("\n"); 

    // return with no error 
    return 0; 
} 
+0

tnx真的tnx爲解釋:) – ScReYm0 2010-07-23 00:08:45

+0

我很高興這是有幫助的。 – 2010-07-23 02:47:29