哪位能讲解下c语言中的命令行参数?

c_hello_world 2009-02-10 09:07:11
RT
本人比较笨,详细点的...
谢了!
...全文
794 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
astrotycoon 2010-11-25
  • 打赏
  • 举报
回复
是啊,这个我们老师根本不讲的......
qq286961851 2010-09-24
  • 打赏
  • 举报
回复
谢了,我们书本讲的好少,老师也不教的
xxgamexx 2009-02-10
  • 打赏
  • 举报
回复
顶楼上的

int main(int argc,char **argv)

it's aslo ok ~
deerwin1986 2009-02-10
  • 打赏
  • 举报
回复
int main( int argc, char* argv[] )
第一个是参数数量
第二个是参数的字符数组 注意要把程序名字包含进来...
冰矿 2009-02-10
  • 打赏
  • 举报
回复
argc用来记录字符串参数的个数,
argv用来存放每个字符串的指针。
举个例子:
int main(int argc, char *argv[])
{
while (argc--)
puts(argv[argc]);
return 0;
}

编译后生成可执行文件,假设文件名为test.exe
然后进入命令行程序,进入到test.exe所在的文件夹下,
执行
test xxx xxxx
这样就相当于执行了test文件,并且带有两个字符串参数xxx, xxxx
这个例子的功能是将字符串参数输出,所以执行后会出现
xxxx
xxx
这样你就可以在函数中设置程序判断参数并执行相应结果。
kestre1 2009-02-10
  • 打赏
  • 举报
回复
linux下程序参数处理,使用标准库
getopt()的函数原型:

#include <unistd.h>
int getopt(int argc, char * const argv, const char * optstring);
extern char * optarg;
extern int optopt, opterr, optind;

getopt返回值是argv数组的下一个选项字符,循环调用getopt可以得到每个选项字符。
1. 如果选项有一个关联值,则外部变量optarg指向这个值。
2. 如果选项处理完毕,getopt返回-1,特殊参数--是getopt停止工作。
3. 如果遇到无法识别的选项,getopt返回问号('?'),并把它保存在外部变量optopt中。
4. 如果遇到要求关联的选项,但未提供这个值时,getopt返回一个(':')。
外部变量optind被设置为下一个待处理参数的索引。当所有参数处理完毕的时候,optind指向argv的尾部。
实例:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
int opt;
/*arguments are -i -l -r -f*/
while((opt = getopt(argc, argv, "if:lr")) != -1)
switch(opt)
{
case 'i':
case 'l':
case 'r':
printf("Option: %c\n", opt);
break;
case 'f':
printf("Filename: %s\n", optarg);
break;
case ':':
printf("Need a argument\n");
break;
case '?':
printf("Unknown arguments");
break;
}
for(;optind < argc; optind++)
printf("Argument: %s\n", argv[optind]);

return 0;
}

waizqfor 2009-02-10
  • 打赏
  • 举报
回复
语言中命令行参数argc,argv
关键词: argc,argv
main(int argc,char **argv)
argv为指针的指针
argc为整数
char **argv or: char *argv[] or: char argv[][]
main()括号内是固定的写法。

下面给出一个例子来理解这两个参数的用法:

假设程序的名称为prog,

当只输入prog,则由操作系统传来的参数为:

argc=1,表示只有一程序名称。
argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog

当输入prog para_1,有一个参数,则由操作系统传来的参数为:

argc=2,表示除了程序名外还有一个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。

当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:

argc=3,表示除了程序名外还有2个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。
argv[2]指向参数para_2字符串。


void main( int argc, char *argv[] )
char *argv[] : argv是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针,他的第一个元素即argv[0]为编译生成的可执行文件名(包括路径eg:"F:\VC\Ex1\Debug\Ex1.exe"),从二个元素(argv[1])开始,是每一个参数
int argc 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名

oyljerry 2009-02-10
  • 打赏
  • 举报
回复
main()程序生的exe,运行的时候,可以传递参数进去,通过argc argv来获得参数,实现不同参数执行不同功能

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧