簡體   English   中英

Go 從 main 到 function(int 類型),然后在 C 語言中返回到 main

[英]Go from main to function(int type) and then back to main in C language

我一直在嘗試搜索,但沒有看到我能理解的答案,或者我可以讓它在我的代碼中工作。

我想做的是:有菜單int main(void) ,用戶可以在其中 select 幾個選項,選項 1、選項 2 等。每個選項將重定向到不同的 function 子菜單。 每個子菜單 function 是一個 int 類型 function。

例如:

#include <stdio.h>
#include <stdlib.h>

// Structs
typedef struct {
    char string1[5];
    int NUMbattery[1];
} t_array;

typedef struct {
    int carbat;
} t_menu;

// Sub menu
int submenu(t_array array[], t_menu *menu) {
    printf("Insert car battery: ");
    scanf(" %d", array[menu->carbat].NUMbattery);

    (menu->carbat) += 1;
    return 0; // How to redirect again to Menu (main) ?
}

// Menu
int main(void) {
    t_array array[10];

    t_menu menu;
    menu.carbat = 0;

    int option;

    do { 
        printf("Car batterys: %d\n"
               "       \tChoose a submenu\n"
               "1. Submenu one\n", menu.carbat);

        scanf(" %d", &option);

        switch (option) {
            case 1:
            submenu(array, &menu);
            break;

            default:
            system("cls");
            printf("Invalid option, try again.\n");
        }
    } while (option != 1);
}

所以問題是,在用戶在子菜單 function 中用戶輸入后,如何使程序 go 回到主 function (用戶子菜單是否保存了輸入數據)?

它是如何顯示的(圖片) 最后結果

Asnwer(感謝@Kaylum):更改while(!=0)

我想您想為用戶添加一個選擇退出的選項。
菜單是這樣的:
0. 退出
1.子菜單一:
2.子菜單二:
...
順便提一下,battery的復數應該是battery。^_^
試試下面的代碼,看看它是否能解決你的問題。

#include <stdio.h>
#include <stdlib.h>

// Structs
typedef struct {
    char string1[5];
    int NUMbattery[1];
} t_array;

typedef struct {
    int carbat;
} t_menu;

// Sub menu
int submenu(t_array array[], t_menu *menu) {
    printf("Insert car battery: ");
    scanf(" %d", array[menu->carbat].NUMbattery);

    (menu->carbat) += 1;
    return 0; // How to redirect again to Menu (main) ?
}

// Menu
int main(void) {
    t_array array[10];

    t_menu menu;
    menu.carbat = 0;

    int option;

    do { 
        printf("Car batteries: %d\n"
               "       \tChoose a submenu\n"
               "0. Quit\n"
               "1. Submenu one\n", menu.carbat);

        scanf(" %d", &option);

        switch (option) {
            case 0:
                break;
            case 1:
            submenu(array, &menu);
            break;

            default:
            system("cls");
            printf("Invalid option, try again.\n");
        }
    } while (option);
}

這是你想要的嗎? 嘗試這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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