c语言用户不同命令调用不同函数实现

在C语言中,可以使用结构体(struct)来存储每条命令所涉及到的信息,包括函数名(作为字符串存储)和函数指针等。然后,可以使用一个数组来存储这些结构体实例。为了根据命令触发对应的函数,可以使用字符串比较来查找匹配的结构体,并调用其函数指针。

以下是一个示例代码,展示了如何实现这一点:

cpp 复制代码
#include <stdio.h>
#include <string.h>

// 定义函数类型
typedef void (*FunctionPtr)();

// 定义结构体来存储函数信息
typedef struct {
    char functionName[50];
    FunctionPtr function;
} FunctionInfo;

// 示例函数
void functionA()
{
    printf("Function A called\n");
}

void functionB()
{
    printf("Function B called\n");
}

void functionC()
{
    printf("Function C called\n");
}

int main()
{
    // 定义函数信息数组
    FunctionInfo functions[] = {
        {"functionA", functionA},
        {"functionB", functionB},
        {"functionC", functionC}
    };
    int numFunctions = sizeof(functions) / sizeof(functions[0]);

    // 输入命令
    char command[50];
    printf("Enter function name to call: ");
    scanf("%s", command);

    // 查找并调用对应的函数
    int i = -1;
    for (i = 0; i < numFunctions; i++) {
        if (strcmp(functions[i].functionName, command) == 0) {
            functions[i].function();
            break;
        }
    }

    // 如果没有找到匹配的函数
    if (i == numFunctions) {
        printf("Function not found\n");
    }

    return 0;
}

在这个例子中,我们有一个函数信息数组,其中包含了函数名和指向这些函数的指针。用户可以通过输入函数名来调用相应的函数。

相关推荐
烛衔溟几秒前
C语言图论:无向图基础
c语言·数据结构·图论·无向图
MSTcheng.2 分钟前
【C++】菱形继承为何会引发二义性?虚继承如何破解?
开发语言·c++
Lion Long6 分钟前
C++20 异步编程:用future、promise 还是协程?
开发语言·c++·stl·c++20
lly2024066 分钟前
Web 标准:构建高效、兼容、可访问的网络基石
开发语言
渡我白衣7 分钟前
计算机组成原理(3):计算机软件
java·c语言·开发语言·jvm·c++·人工智能·python
m0_471199639 分钟前
【JavaScript】Map对象和普通对象Object区别
开发语言·前端·javascript
心.c9 分钟前
《从零开始:打造“核桃苑”新中式风格小程序UI —— 设计思路与代码实现》
开发语言·前端·javascript·ui
小龙报10 分钟前
【C语言初阶】动态内存分配实战指南:C 语言 4 大函数使用 + 经典笔试题 + 柔性数组优势与内存区域
android·c语言·开发语言·数据结构·c++·算法·visual studio
倔强菜鸟10 分钟前
2025.11.21-GO语言入门(一)
开发语言·后端·golang
白露与泡影12 分钟前
从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化
java·开发语言·测试工具