【发布时间】:2014-12-03 20:45:43
【问题描述】:
我在调用函数和稍后在主程序中再次使用它们时遇到了很多麻烦。我还没有找到深入的答案来解释为什么它不运行。我知道参数属于被调用函数括号内,但我希望用户输入在被调用程序中开始。这甚至可能吗?从理论上讲,该函数会询问用户一年,检查它是否在某些参数范围内,然后将其返回到我希望最终能够将其存储在数组中的主函数。现在,有人可以告诉我如何在这个初级程序中完成这项工作吗?提前谢谢!
#include <stdio.h>
char year_info();
int main(void)
{
int menu_selection;
char year;
printf("Please choose from the following menu: \n1. Insert a new movie\n2. Show movie\n3. List all\n4. Exit\n");
scanf("%i", &menu_selection);
switch (menu_selection)
{
case 1: year = year_info();
printf("%c", year);
break;
}
}
char year_info()
{
int year_input;
printf("\nYear: ");
scanf("%i", &year_input);
if (year_input > 2016 || year_input < 1920)
{
printf("Sorry, I do not recognize this command. Please try again.\n");
}
else
{
int year = year_input;
return year;
}
}
【问题讨论】:
-
A
char(通常)是一个 8 位整数。根据编译器的不同,它可以取 -128 到 127 或 0 到 255 之间的值。scanf格式"%i"读入int变量,int通常是 32位宽,从负 20 亿到正 20 亿。当然,您会发现尝试将 1 或 2000 之类的值放入无法容纳那么大值的变量时会出现一些问题。 -
char year_info();-->int year_info();,char year_imput;-->int year_imput;,scanf("%i", year_imput);-->scanf("%i", &year_imput);并且存在不返回值的路径。 -
那么我应该改用 %d 吗?
-
除了上述问题(和其他问题)之外,在调用函数之前声明原型是可以的,只要您在程序中的其他位置定义函数。
标签: c function parameters return-value command-line-arguments