2010-07-22 86 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