我在调用函数时遇到了很多麻烦,并且稍后再次在主程序中使用它们。我没有找到答案深入解释为什么这不会运行。我知道参数属于被调用的函数括号内,但我希望用户输入在被调用的程序中开始。这甚至可能吗?从理论上讲,该函数会询问用户一年,检查它是否在某些参数范围内,然后将其返回到main函数,我希望最终能够将它存储在数组中。现在,有人可以告诉我如何在这个基础课程中完成这项工作吗?提前谢谢!
#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;
}
}
答案 0 :(得分:1)
它没有运行,因为你传递了scanf
变量,但你应该传递变量的地址,即使用:
scanf("%i", &something);
而不是scanf("%i", something);
另外,正如其他人所指出的那样,你过于宽松地混合char
和int
,所以它不会像预期的那样工作。
year
和year_imput
无法成为字符,因为他们不会保留足够大的值,您至少需要短片。
答案 1 :(得分:0)
你有2个错误。
scanf("%i", &menu_selection);
scanf("%i", &year_imput);
你需要使用&amp;将变量的地址传递给scanf()
。
编辑:但是,我会使用一个整数,因为scanf("%c", &something)
只会识别您输入的第一个字符,而不是整个字符串,即使发生了这种情况不能在字符串之间做if (year_imput > 2016 || year_imput < 1920)
,你可以用字符做,但同样,他们只能存储一个字符,所以我会像你这样完成你的程序。
#include <stdio.h>
int year_info();
int main() {
int menu_selection;
int 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("%i", year);
break;
default:
break;
}
return 0;
}
int year_info() {
int year_imput;
printf("\nYear: ");
scanf("%i", &year_imput);
if (year_imput > 2016 || year_imput < 1920) {
printf("Sorry, I do not recognize this command. Please try again.\n");
return 0;
}
else
return year_imput;
}