是否有其他方法可以使用main
函数将值返回到void
函数。我不想使用以下方式,因为我想要求用户在main函数中输入一些值,然后在void
函数中检查这些值是否正确。
#include <stdio.h>
void fun_1(int *num1, int *num2) {
printf("Enter both numbers: ");
scanf("%d", num1);
scanf("%d", num2);
}
int main(void) {
int num1, num2, total;
fun_1(&num1, &num2);
total = num1 + num2;
printf("%d \n", total);
}
在此代码中,我们要求用户在void
函数中输入值,但我想让用户在main
中输入值!
答案 0 :(得分:3)
还有另一种方法可以利用全局变量,但随着程序变得越来越复杂,它可能会给你带来更多的麻烦,那么它是值得的。
如果使用全局变量将输入存储在子函数中,则可以在main()
函数中直接访问它们以获取值。你不会需要你的子功能return
。
话虽如此,最好更改函数返回类型(如果要返回多个值,可能返回包含用户提供的值的struct
)以符合您的要求。
答案 1 :(得分:1)
如果你想阅读main
中的值但是在另一个函数中检查它们(例如,确保两者都是正数),你可以这样做:
#include <stdio.h>
void check_numbers(int num1, int num2, int *valid) {
if ((num1 > 0) && (num2 > 0)) {
*valid = 1;
} else {
*valid = 0;
}
}
int main(void) {
int num1, num2, total, valid;
printf("Enter both numbers: ");
scanf("%d", num1);
scanf("%d", num2);
check_numbers(num1, num2, &valid);
if (valid) {
total = num1 + num2;
printf("%d \n", total);
} else {
printf("numbers are invalid\n);
}
}