刚开始学 希望得到帮助

刚开始学 请问这个怎么解决呢 重启过电脑和软件都没有用 点击运行后就会跳出来这个

img

img

文件名改成英文即可
解决你的问题,请点赞采纳,谢谢

【相关推荐】



  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7467200
  • 这篇博客也不错, 你可以看下浅谈嵌入式工程师入门及嵌入式工程师进阶,学嵌入式这些你需要知道
  • 您还可以看一下 CSDN讲师老师的 深度学习与强化学习技术沙龙 暨《深度学习模型及应用详解》新书发布会课程中的 深度学习在大规模在线广告系统中的应用小节, 巩固相关知识点
  • 除此之外, 这篇博客: 如何优雅地处理命令行参数?中的 长选项处理 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    为了应对前面说的这种情况,需要用到下面两个函数中的一个:

    #include<getopt.h>
    int getopt_long(int argc, char * const argv[],
                      const char *optstring,
                      const struct option *longopts, int *longindex);
    
    int getopt_long_only(int argc, char * const argv[],
                      const char *optstring,
                      const struct option *longopts, int *longindex);
    

    它们的第一个第二个参数和getopt一样,第三个参数是一个struct option指针:

               struct option {
                   const char *name;
                   int         has_arg;
                   int        *flag;
                   int         val;
               };
    
    

    其成员含义分别如下:

    • name 长选项名称
    • has_arg 参数可选项,no_argument表示该选项后不带参,required_argument表示该选项后面带参数
    • *flag 匹配到选项后,如果flag是NULL,则返回val;如果不是NULL,则返回0,并且将val的值赋给flag指向的内存
    • val 匹配到选项后的返回值

    longindex表示长选项在longopts中的索引值。

    那getopt_long和getopt_long_only有什么区别呢?
    实际上主要功能是差不多的,只是前者一个-时被解析成短选项,–被解析成长选项,而后者都被解析为长选项,举个例子,-help在前者被解析为h,e,l,p四个选项,而在后者是和–help一样的效果,即被认为是长选项。在getopt_long_only中,optstring可以为“”。

    我们来看一个示例程序:

    //来源:公众号【编程珠玑】
    //博客:https://www.yanbinghu.com
    //main2.c
    #include<stdio.h>
    #include<getopt.h>
    extern int optind,opterr,optopt;
    extern char *optargi;
    //定义长选项
    static struct option long_options[] = 
    {
        {"help",no_argument,NULL,'h'},
        {"verbose",no_argument,NULL,'v'},
        {"number",required_argument,NULL,'n'}
    };
    int main(int argc,char *argv[])
    {
        int index = 0;
        int c = 0; //用于接收选项
        /*循环处理参数*/
        while(EOF != (c = getopt_long(argc,argv,"hvn:",long_options,&index)))
        {
            switch(c)
            {
                case 'h':
                    printf("we get option -h,index %d\n",index);
                    break;
                case 'v':
                    printf("we get option -v,index %d\n",index);
                    break;
                //-n选项必须要参数
                case 'n':
                    printf("we get option -n,para is %s\n",optarg);
                    break;
                //表示选项不支持
                case '?':
                    printf("unknow option:%c\n",optopt);
                    break;
                default:
                    break;
            }   
        }
        return 0;
    }
    

    编译运行:

    $ gcc -o main2 main2.c
    $ ./main2 --verbose --help 
    we get option -v,index 1
    we get option -h,index 0
    

    注意,为什么-v参数的index是0?因为只有长选项才会对应index。

    可以看到,使用–跟长选项,单个-后面跟短选项,但是如果是下面这样呢?

    $ ./main2 -help 
    we get option -h,index 0
    ./main2: invalid option -- 'e'
    unknow option:e
    ./main2: invalid option -- 'l'
    unknow option:l
    ./main2: invalid option -- 'p'
    unknow option:p
    

    在这里,由于使用的getopt_long,它对于单个-的字符串,里面每个字符都当成了一个选项,因此help对它来说,其实是四个选项,但是后三个不被识别。如果想要-help也被当成长选项,那么就需要用到getopt_long_only函数了。

    最后,再完整的用一遍:

    $ ./main2 --help --verbose --number 10
    we get option -h,index 0
    we get option -v,index 1
    we get option -n,para is 10
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^