【问题标题】:Creating a function in C that ask for inputs and outputs, then calling that function in main?在 C 中创建一个要求输入和输出的函数,然后在 main 中调用该函数?
【发布时间】:2015-04-05 18:34:08
【问题描述】:

我有一个非常基本的问题。我正在尝试重构我的代码,而不是要求输入并扫描 main 中的输入,我想创建一个输入函数来询问问题并在 main 中调用该函数。现在我正在尝试考虑参数,我想我只是不明白它们在这个场景中是如何工作的,现在我把它们留空了,这段代码编译得很好,但是当我运行它时,它所做的只是打印我拥有的东西在 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");
}

【问题讨论】:

  • 您的“out_xxx”函数未显示与“in_xxx”函数关联的值。声明的变量对于每个过程都是局部的,例如 dec_input 是每个方法中的不同变量。您需要将其作为参数传递给您的函数。您也没有捕获函数返回的值。

标签: c function int


【解决方案1】:

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

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

x = in_decimal();

您还应该在main 之前放置被调用函数(int in_decimal(); 等)或函数本身的声明。

【讨论】:

    【解决方案2】:

    那么这样对吗?既然它抓住了 dec_input 作为参数并使用从输入函数中的扫描获得的确切数字? #包括

    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;
    
    }
    

    【讨论】:

      【解决方案3】:

      我想通了,我没有看到我在 main 中再次初始化函数,取出 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;
      }
      

      【讨论】:

      • 您的基本问题还没有解决。 in_decimal() 读取并返回一个值,该值永远不会返回给 main() 中的调用程序。如果 out_decimal 正在打印正确的值,那是巧合。 in_decimal() 返回的值在这两种情况下都会丢失。
      • 所以如果我必须使用相同的输入,我将第二个函数 out_decimal 的参数设为 (dec_input)?在弄清楚我应该在哪里初始化 int dec_input 的直觉方面也有点令人困惑。当我把它放在我创建的第一个函数中时它就起作用了。但是在声明任何函数之前将其放在 main 中不会。但是对于输出我不必声明它,我认为主要是因为它已经被第一个函数声明了,因为我们想使用相同的输入。我还必须将它分配给像 x = in_decimal(); 这样的变量吗?只有在我想要的时候才这样做
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多