[C.C++] C语言中getopt()函数的用法_c getopt

378 0
Honkers 2025-6-4 02:55:54 来自手机 | 显示全部楼层 |阅读模式


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

1.getopt()函数

getopt函数用来解析命令行选项,声明所在头文件为:

  1. #include <unistd.h>
复制代码

函数原型如下:

  1. int getopt(int argc, char \* const argv[], const char \*optstring);
复制代码

第一个参数argc是参数个数,和main函数的argc一样;

第二个参数argv是字符串指针,和main函数的argv一样;

第三个参数 optstring 是选项字符串,是本文所要讲述的重点。

2. optstring

选项字符串的内容如下:

  • 字符代表一个选项;
  • 没有冒号就表示纯选项,不需要参数;
  • 一个冒号代表该选项之后必须带有参数,可以使用空格,也可以不使用;
  • 两个冒号代表该项之后的参数可写可不写;

还有一些错误处理:

针对字符后无冒号的设定:

  • 不加空格带上参数后,会解析为这个两个独立选项合并;
  • 加上空格带上参数,会只解析出选项,忽略参数。

针对字符后一个冒号的设定:

  • 带上空格多加几个参数后,只解析第一个,其余忽略;
  • 如果不加参数,解析失败;

比如,"vha:b:c::"就表示:

  • 支持-v选项,通常用于打印版本号;
  • 支持-h选项,通常用于打印帮助信息;
  • 支持-a选项,后面必须带有一个参数;
  • 支持-b选项,后面必须带有一个参数;
  • 支持-c选项,后面可以带参数,也可以不用带参数;

3. 使用的全局变量

使用该函数时,会用到/设置四个全局变量:

  1. extern char\* optarg;
  2. extern int optind;
  3. extern int opterr;
  4. extern int optopt;
复制代码
  • optarg:用来保存选项的参数;
  • optind:用来记录下一个检索位置;
  • opterr:用来表示是否将错误信息输出到stderr;
  • optopt:表示不在选项字符串optstring中的选项;

4. 示例程序

  1. #include <unistd.h>
  2. #include <stdio.h>
  3. int main(int argc, char \* argv[])
  4. {
  5. int ch;
  6. **收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
  7. ![img](https://img-blog.csdnimg.cn/img_convert/7388836fc484e1e8cb408c3c53bf6f04.png)
  8. ![img](https://img-blog.csdnimg.cn/img_convert/4dfdb31f199f52a2b24d5ba137219c62.png)
  9. **[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
  10. **需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**
  11. **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
  12. **都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  13. V获取:vip1024c (备注嵌入式)**
  14. **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
  15. **都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4014
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行