gpt4 book ai didi

c - 在处理命令行参数时如何在 C 中考虑空格

转载 作者:行者123 更新时间:2023-11-30 18:51:04 26 4
gpt4 key购买 nike

我正在尝试处理命令行参数,但命令行参数包含我需要考虑的空格。

这是我的代码,我正在尝试处理以下命令行参数:

  • 如果我输入“-upper”作为命令参数,则会将文本更改为大写/
  • 如果我输入“-lower”,则会将文本更改为小写/
  • 如果我输入“-upper -lower”,那么它只会将文本更改为小写/
  • 如果我输入“-lower -upper”,那么它只会将文本更改为大写/

我的程序片段是:

int main(int argc, char *argv[])
{

int ch;
int arg;
char buf[100];
int upper = 0;
int lower = 0;

for( arg = 1; arg < argc; arg++ )
{
if( strcmp( argv[arg] , "-upper") == 0 )
{
upper = 1;
}
if( strcmp( argv[arg] , "-lower") == 0)
{
lower = 1;
}
if( strcmp( argv[arg] , "-lower -upper") == 0 )
{
upper = 1;
}
else if( strcmp( argv[arg] , "-upper -lower") == 0)
{
lower = 1;
}

else
{
fprintf(stderr,"Invalid command line option\n" );
return 0;
}
}

while ((ch = getchar()) != EOF) //deal with cmd args

但是,strcmp 不处理空格。所以出现的问题是C程序不会将“-lower -upper”视为“大写”。如何比较包含空格的 cmd 参数,以便它将处理“-lower -upper”与“-upper”相同?

感谢您的帮助!

最佳答案

当设置了 upper 或相反时,您可以简单地清除 lower,即。最后一个参数会清除旧的参数:

int upper = 0;
int lower = 0;

for( arg = 1; arg < argc; arg++ )
{
printf("parsing %s\n", argv[arg]);
if( strcmp( argv[arg] , "-upper") == 0 )
{
printf("Now in upper mode\n");
lower = 0;
upper = 1;
continue;
}
if( strcmp( argv[arg] , "-lower") == 0)
{
printf("Now in lower mode\n");
upper = 0;
lower = 1;
continue;
}

fprintf(stderr,"Invalid command line option\n" );
return 0;
}

关于c - 在处理命令行参数时如何在 C 中考虑空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com