标题:main()的参数
只看楼主
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
 问题点数:0 回复次数:6 
main()的参数

我在CMD里面运行 argv a 结果是实现 getch();的功能
main(int argc,char *argv[])
{
if(argv[1]=='0')
{
printf("You don\'t input any argument!");
}
else
{
switch(argv[1])
{
case 'a': printf("The argument is \"a\"");break;
case 'b': printf("The argument is \"b\"");break;
case 'c': printf("The argument is \"c\"");break;
case 'd': printf("The argument is \"d\"");break;
case 'e': printf("The argument is \"e\"");break;
case 'f': printf("The argument is \"f\"");break;
case 'g': printf("The argument is \"g\"");break;
case 'h': printf("The argument is \"h\"");break;
}
}

getch();
}

搜索更多相关主题的帖子: main argument The break 
2007-02-27 16:30
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
得分:0 

switch(argv[1])
改成
switch(*argv[1])

就正常了

因为main的第二个参数是一个字符串数组
也就是说argv[1]是个指针
*argv[1]才是他指向的字符串的第一个字符
2007-02-27 16:41
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
得分:0 
以下是引用田里兵蜂在2007-2-27 16:41:54的发言:

switch(argv[1])
改成
switch(*argv[1])

就正常了

因为main的第二个参数是一个字符串数组
也就是说argv[1]是个指针
*argv[1]才是他指向的字符串的第一个字符

可以了 但是 下面这个功能没有实现 (就是没有输入参数)
if(*argv[1]=='0')
{
printf("You don\'t input any argument!");
}

2007-02-27 16:51
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
得分:0 

我在CMD里面运行 argv a 结果是实现 getch();的功能
main(int argc,char *argv[])
{
if(argv[1]=='0')
{
printf("You don\'t input any argument!");
}
else
{
switch(argv[1])
{
case 'a': printf("The argument is \"a\"");break;
case 'b': printf("The argument is \"b\"");break;
case 'c': printf("The argument is \"c\"");break;
case 'd': printf("The argument is \"d\"");break;
case 'e': printf("The argument is \"e\"");break;
case 'f': printf("The argument is \"f\"");break;
case 'g': printf("The argument is \"g\"");break;
case 'h': printf("The argument is \"h\"");break;
}
}

getch();
}

还有就是,上面红色的代码有逻辑错误,不知是你写错了,还是老谭的书有问题.
main的第一个参数是一个int型,表示传入的字符串个数
正确的应该是
if (argc==1)
因为argc不会为0,系统会自动传入程序路径字符串,保存在argv[0]中
所以你在CMD下运行程序时不带字符串, argc的值也为1

[此贴子已经被作者于2007-2-27 17:20:27编辑过]

2007-02-27 16:54
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
得分:0 

我想表示的是当参数为空的时候就输入You don't input any argument!
应该要怎么实现
if(*argv[1]=='0')
{
printf("You don\'t input any argument!");
}

2007-02-27 17:16
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
得分:0 
改成
if(argc==1)
{
printf("You don\'t input any argument!");
}

看下我上面的说明吧,已经很清楚啦

2007-02-27 17:19
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 
以下是引用zerocn在2007-2-27 17:16:07的发言:

我想表示的是当参数为空的时候就输入You don't input any argument!
应该要怎么实现
if(*argv[1]=='0')
{
printf("You don\'t input any argument!");
}

输入0就可以,因为这’0‘是字符,'\0'与'0'是两回事。


谁有强殖装甲第二部,可以Q我460054868
2007-02-27 18:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-121865-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023459 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved