![](/img/trans.png)
[英]How to copy local variable to global variable if both have the same names in C without using a third variable?
[英]how do i have constant value without a global variable in C using functions
所以,我有這個代碼:
#include <stdio.h>
void menu_loop(int run) {
if (run == 0) {
printf("bad\n");
menu();
}
else
printf("good");
}
int check_menu(int menu1) {
if (menu1 > 3 || menu1 < 0)
return 0;
else
return 1;
}
int menu() {
int choice;
printf("----MENU----\n0 -> Exit\n1 -> Prime time\n2 -> Calander calculating\n3 -> Matrix printing\n");
scanf_s("%d", &choice);
int check2 = check_menu(choice);
menu_loop(check2);
}
void main() {
menu();
}
我需要做的是每當 check_menu 返回 0 時,我需要有一個從 0 go 開始的 certein 變量增加 1。每次我嘗試這個時,我發現該值被重新初始化為 0,因為我在 ZC1C425268E68385D1AB5074C17A94F14 中初始化它。 提前致謝!
從 function 返回錯誤代碼以防萬一發生了壞事,這是 C 中的常見做法,因為它沒有像在更高級語言中那樣拋出異常的概念。 我建議您將宏定義得更明確,並使用循環而不是遞歸。
#include <stdio.h>
#define INVALID_CHOICE_ERR 1
int check_menu(int menu1)
{
if (menu1 > 3 || menu1 < 0)
return INVALID_CHOICE_ERR;
else
return 0;
}
int menu()
{
int choice;
do {
printf("----MENU----\n0 -> Exit\n1 -> Prime time\n2 -> Calander calculating\n3 -> Matrix printing\n");
scanf_s("%d", &choice);
} while (check_menu(choice) == INVALID_CHOICE_ERR);
// Now that a valid choice has been selected, you can use it
}
void main()
{
menu();
}
或者您可以通過簡化 while 循環來擺脫宏和 function
while (choice > 3 || choice < 0);
另外,我建議您閱讀有關scanf()
的缺點 Scanf的缺點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.