簡體   English   中英

我如何使用函數在 C 中獲得沒有全局變量的常量值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM