Daniel_Zhang 发表于 2021-8-20 19:03:46

如何在运行a.out 的时候输入参数决定运行哪个 function

我有一个需求,就是在 int main() 里面会接收输入的 argv,然后当 1 的时候,执行 fun1(), 2 的时候执行 fun2(), 3 的时候执行 fun3()

不是 scanf 获取用户输入哦

而是 gcc 编译以后,生成了一个 a.out 的文件

然后 ./a.out 1 这种的,接收参数,把 1 传给 main,main 决定执行 fun1()

有点类似于 python 里面的 sys.argv,但是我不知道 c 里面怎么实现

求助各位大佬{:10_297:}

wp231957 发表于 2021-8-20 19:39:48

int main(int argc, char* argv[])
自己print一下这两个参数即可
一个是参数个数,一个是参数列表

人造人 发表于 2021-8-20 20:59:47

本帖最后由 人造人 于 2021-8-20 21:01 编辑

#include <stdio.h>

void f1(void) {
    printf("void f1(void)\n");
}

void f2(void) {
    printf("void f2(void)\n");
}

void f3(void) {
    printf("void f3(void)\n");
}

int main(int argc, char *argv[]) {
    if(argc != 2) return -1;
    int sel;
    sscanf(argv, "%d", &sel);
    switch(sel) {
      case 1: f1(); break;
      case 2: f2(); break;
      case 3: f3(); break;
    }
    return 0;
}

kogawananari 发表于 2021-8-20 21:10:41

这不是学c的前几节课的知识吗 (我当时看的哔哩哔哩的嵌入式教程){:10_292:}

Daniel_Zhang 发表于 2021-8-20 22:57:21

人造人 发表于 2021-8-20 20:59


感谢大佬{:10_266:}

Daniel_Zhang 发表于 2021-8-22 15:24:37

人造人 发表于 2021-8-20 20:59


再次感谢,我根据实际需求,对大佬的代码修改了一下,现在可以接收字符串了,而不是单一的数字{:10_297:}

此处也要感谢楼上的猫大佬给我启发,读 argv 里面的对应位置,获取输入,比如 ./a.out testing,argv 对应的即为我输入的参数 'testing',然后 if strcmp 进行判断,如果匹配到我的条件,执行对应的 function{:10_254:}

人造人 发表于 2021-8-22 18:58:53

Daniel_Zhang 发表于 2021-8-22 15:24
再次感谢,我根据实际需求,对大佬的代码修改了一下,现在可以接收字符串了,而不是单一的数字

...

^_^
页: [1]
查看完整版本: 如何在运行a.out 的时候输入参数决定运行哪个 function