C语言的一个小问题 请高手指点下
#include<stdio.h>#include<ctype.h>intmain(intargc,char*argv[]){charmode='p';intok=1;i...
#include <stdio.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
char mode='p';
int ok = 1;
int ch;
if (argc > 2)
{
printf("Usage: %s [-p | -u | -l]\n", argv[0]);
ok = 0; /* skip processing input */
}
else if(argc == 2)
{
if (argv[1][0] != '-')
{
printf("Usage: %s [-p | -u | -l]\n", argv[0]);
ok = 0;
}
else
switch(argv[1][1])
{
case 'p':
case 'u':
case 'l': mode=argv[1][1]; 这一句有什么作用,去掉后没有问题 break;
default : printf("%s is an invalid flag; ", argv[1]);
printf("using default flag (-p).\n");
}
}
if(ok)
while((ch=getchar())!=EOF)
{
switch(mode)
{
case 'p' : putchar(ch);
break;
case 'u' : putchar(toupper(ch));
break;
case 'l' : putchar(tolower(ch));
break;
}
}
return 0;
} 展开
#include <ctype.h>
int main(int argc, char *argv[])
{
char mode='p';
int ok = 1;
int ch;
if (argc > 2)
{
printf("Usage: %s [-p | -u | -l]\n", argv[0]);
ok = 0; /* skip processing input */
}
else if(argc == 2)
{
if (argv[1][0] != '-')
{
printf("Usage: %s [-p | -u | -l]\n", argv[0]);
ok = 0;
}
else
switch(argv[1][1])
{
case 'p':
case 'u':
case 'l': mode=argv[1][1]; 这一句有什么作用,去掉后没有问题 break;
default : printf("%s is an invalid flag; ", argv[1]);
printf("using default flag (-p).\n");
}
}
if(ok)
while((ch=getchar())!=EOF)
{
switch(mode)
{
case 'p' : putchar(ch);
break;
case 'u' : putchar(toupper(ch));
break;
case 'l' : putchar(tolower(ch));
break;
}
}
return 0;
} 展开
2个回答
展开全部
case 'l': mode=argv[1][1]; 这一句有什么作用,去掉后没有问题 break;
argv[1][1]这里存储命令行参数。
由于mode没有使用,所以去掉也无所谓。
argv[1][1]这里存储命令行参数。
由于mode没有使用,所以去掉也无所谓。
追问
还有一个问题 假如我输入-u 但是mode不是等于'p'吗 case 'u' : putchar(toupper(ch));这句为什么能够实现呢?
追答
else
switch(argv[1][1])
{
case 'p':
case 'u':
case 'l': mode=argv[1][1]; break; /// 这里记录了mode.不管是p,u,l都会执行到这里,并且记录结果
default : printf("%s is an invalid flag; ", argv[1]);
printf("using default flag (-p).\n");
}
}
if(ok)
while((ch=getchar())!=EOF)
{
switch(mode) // 这里就可以通过mode来进行处理了。
{
case 'p' : putchar(ch);
break;
case 'u' : putchar(toupper(ch));
break;
case 'l' : putchar(tolower(ch));
break;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询