首页 > 其他分享 >C库函数

C库函数

时间:2022-12-20 15:45:59浏览次数:62  
标签:fp const int char str 字符串 库函数

C标准库链接:

https://www.runoob.com/cprogramming/c-standard-library-stdio-h.html

15、int main(int argc, char *argv[], char *envp[]) 的用法

其实: int main(int argc,char *argv[]) 是 UNIX 和 Linux 中的标准写法,而 int main() 只是 UNIX 及 Linux 默许的用法.

那究竟 argc,argv[] 有何之用呢?下面看个例子 edit.c 就会明白它们的用法了:

  1. #include <unistd.h>
  2. #include <stdio.h>
  3. int main(int argc,char *argv[]){
  4. if(argc==1 || argc>2) {
  5. printf("请输入想要编辑的文件名如:./edit fillen");
  6. }
  7. if(argc==2) {
  8. printf("编辑 %sn",argv[1]);
  9. }
  10. exit(0)
  11. }
  12. 编译该程序:gcc -o edit edit.c
  13. 运行:./edit
  14. 结果:请输入想要编辑的文件名如:./edit fille
  15. 运行:./edit edit.txt
  16. 结果:编辑 edit.txt
  17. 看到这里 argc,argv[] 如何用就很明白了,argc 是外部命令参数的个数,argv[] 存放各参数的内容,如上例:执行 ./edit 时,argc 为1, argv[0] 为 ./edit .
  18. 而执行 ./edit edit.txt 时,argc 的值为 2,argv[0] 为./edit, argv[1] 为 edit.txt .
  19. 网友回复:简单的说,就是命令行参数!
  20. argc 是外部命令参数的个数,argv[] 存放各参数的内容,如上例:执行 ./edit 时,argc 为1, argv[0] 为 ./edit .
  21. 而执行 ./edit edit.txt 时,argc 的值为 2,argv[0] 为 ./edit,argv[1] 为 edit.txt .
  22. 网友回复:int argc 参数个数
  23. char** argv 参数数组,,数组大小就是前面那个参数,通过数组下标访问里面存放的内容,例如argv[0],argv[1]
  24. 网友回复:int main(int argc,char** argv)
  25. {
  26. FILE *fp;
  27. fp = fopen("E:/works/ee/debug/1.txt","r");
  28. 为什么这个fp指针还是为空了???
  29. 网友回复:指针使用之前应该进行初始化

11、int main(int argc, char *argv[], char *envp[])

这个赋值过程是编译器完成的,我们只需要读出数据就可以了。

int main(int argc, char *argv[], char *envp[])
main()函数一般用int或者void形的。我比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。

参数:

int argc
这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe
D:\tc2>test
这个时候,argc的值是1
但是
D:\tc2>test.exe myarg1 myarg2
的话,argc的值是3。也就是 命令名 加上两个参数,一共三个参数
char *argv[]
这个东东用来取得你所输入的参数
D:\tc2>test
这个时候,argc的值是1,argv[0]的值是 "test"
D:\tc2>test myarg1 myarg2
这个时候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。
这个东东一般用来为程序提供非常重要的信息,如:数据文件名,等等。
如:copy a.c b.txt
这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。
当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求

argv数组中的第一个单元,指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数。
这个赋值过程是编译器完成的,我们只需要读出数据就可以了。

char *envp[]
这个东东相对来说用得比较少。它是用来取得系统的环境变量的。
如:在DOS下,有一个PATH变量。当你在DOS提示符下输入一个命令(当然,这个命令不是dir一类的内部命令)的时候,DOS会首先在当前目录下找这个命令的执行文件。

如果找不到,则到PATH定义的路径下去找,找到则执行,找不到返回Bad command or file name

在DOS命令提示符下键入set可查看系统的环境变量
同样,在UNIX或者LINUX下,也有系统环境变量,而且用得比DOS要多。如常用的$PATH,$USER,$HOME等等。
envp保存所有的环境变量。其格式为(UNIX下)
PATH=/usr/bin;/local/bin;
HOME=/home/shuui
即:
环境变量名=值
DOS下大概也一样。

exit()是程序退出时的返回码,可以用其他程序接收,判断是否正常退出。如exit(-1)认为异常退出。

Examples:

https://www.cnblogs.com/avril/archive/2010/03/22/1691477.html

C语言库- <getopt.h>

1、int getopt_long(argc, argv, short_options, long_options, NULL ) 解析命令行参数

  1. int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);

    使用GNU C提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。命令行参数可以分为两类,一类是短选项,一类是长选项,

    如(ls 命令参数)所示,

    -a,-A,-b都表示短选项,

    --all,--almost-all, --author都表示长选项。

    他们两者后面都可选择性添加额外参数。比如--block-size=SIZE,SIZE便是额外的参数。原文链接:https://blog.csdn.net/qq_33850438/article/details/80172275

(1)argc和argv和main函数的两个参数一致

(2)optstring: 表示短选项字符串

短选项在参数前加一杠"-",

  1. 形式如“a

    标签:fp,const,int,char,str,字符串,库函数
    From: https://www.cnblogs.com/Bruce-blog/p/16994324.html

相关文章