2015-02-05 26 views
-2

我有一个非常基本的问题。我正在尝试重构我的代码,以便不要求输入并在main中扫描输入,而是要创建一个输入函数来提出问题并在main中调用该函数。现在我正在考虑这些参数,我想我只是不理解它们在这种情况下的工作方式,现在我将它们留为空白,这段代码完全编译,但是当我运行它时,它所做的只是打印我拥有的东西在主要和不做我想要的功能(我添加了一些打印行作为调试工具,所以我可以知道,如果我的功能正在打或不打。他们都打印出来,所以它的功能本身有问题)在C中创建一个请求输入和输出的函数,然后在main中调用该函数?

#include <stdio.h> 
int main(int argc, char *argv[]) 
{ 
    int sample_function_test(); 
    printf("It reaches this far\n"); 
    printf("Data demonstrator program by Me\n"); 
    int in_decimal(); 
    printf("It reaches this far\n"); 
    int out_decimal(); 
    printf("It reaches this far\n"); 
    /*Called the funtions above gets input and shows output*/ 
    /*Says to do it Twice*/ 
    int in_decimal(); 
    int out_decimal();  
    return 0; 
} 
/*Function In Decimal,Reads user inputed number*/ 

int in_decimal() 
{ 
    int dec_input; 
    printf("Please type an int in decimal:"); 
    scanf("%d",&dec_input); 
    return dec_input; 
} 

/*Function Out Decimal, Outputs user inputed number*/ 

int out_decimal() 
{ 
    int dec_input; 
    printf("Output in decimal:%d\n", dec_input); 
    return dec_input; 
} 
int sample_function_test() 
{ 
    printf("testing function call"); 
} 
+1

您'out_xxx'函数未显示与'in_xxx'函数关联的值。声明的变量对每个过程都是本地的,例如dec_input是每个方法中的一个独特变量。您需要将它作为函数中的参数传递。你也没有捕获从你的函数返回的值。 – 2015-02-05 18:59:25

回答

2

int in_decimal();是一个函数声明,而不是函数调用。您需要改用in_decimal();来调用该功能。其他功能也是如此。

您可能还想将返回的值放在某个地方,例如

x = in_decimal(); 

你也应该把无论是调用的函数(int in_decimal();等),或函数本身,声明main之前。

-1

我想通了,我没有看到我正在初始化主函数,取出int的修复这个。

int main(int argc, char *argv[]) 
{ 
    in_decimal(); 
    out_decimal(); 
    /*Called the funtions above gets input and shows output*/ 
    /*Says to do it Twice*/ 
    in_decimal(); 
    out_decimal();  
    return 0; 
} 
+0

您的基本问题尚未解决。 in_decimal()读取并返回一个永远不会返回到main()中的调用程序的值。如果out_decimal正在打印正确的值,这是巧合。 in_decimal()返回的值在两种情况下都会丢失。 – 2015-02-05 19:23:07

+0

所以如果我不得不使用相同的输入,我会有第二个函数out_decimal的参数是(dec_input)?也就是在确定我应该初始化int dec_input的位置的直觉上有点混淆。当我将它放入我创建的第一个函数中时,它会起作用。但是在声明任何函数之前将其放在主函数中并没有。但对于输出我不必声明它,我认为主要是因为它已经被第一个函数声明,因为我们想使用相同的输入。还有,我必须将它分配给像x = in_decimal();这样的变量。多数民众赞成只有如果我想要它 – 2015-02-05 21:29:19

0

那么这是正确的吗?既然它抓住了dec_input作为参数,并使用输入函数中扫描得到的确切数字? #include

int main(int argc, char *argv[]) 
{ 
    in_decimal(); 
    out_decimal(); 
    /*Called the funtions above gets input and shows output*/ 
    /*Says to do it Twice*/ 
    in_decimal(); 
    out_decimal();  
    return 0; 
} 
/*Function In Decimal,Reads user inputed number*/ 
int in_decimal(void) 
{ 
    int dec_input; 
    printf("Please type an int in decimal:"); 
    scanf("%d",&dec_input); 
    return dec_input; 
} 

/*Function Out Decimal, Outputs user inputed number*/ 

int out_decimal(dec_input) 
{ 
    printf("Output in decimal:%d\n", dec_input); 
    return dec_input; 

} 
相关问题