【发布时间】:2016-05-27 02:02:02
【问题描述】:
我正在开发一个简单的程序,它应该根据参数将字符串更改为全部大写或全部小写。例如,如果可执行文件的名称是change:
./change -u thiswillbeuppercase
这将是大写
./change -l THISWILLBELOWERCASE
thiswillbelowercase
如果没有提供任何选项,我无法弄清楚如何默认执行大写操作。例如,这就是我希望它执行的方式:
./把这个改成大写
这将是大写
这是我的主要功能目前的样子:
int main(int argc, char *argv[]) {
int c;
while((c = getopt(argc,argv,"u:s:l:")) != -1){
char *str = optarg;
if(c == '?'){
c = optopt;
printf("Illegal option %c\n",c);
} else{
switch(c){
case 'u':
strupper(str);
break;
case 'l':
strlower(str);
break;
case 's':
strswitch(str);
break;
default:
strupper(str);
break;
}
}
}
return 0;
}
我尝试在 switch 语句的默认部分调用 strupper 函数,但这似乎不起作用。到目前为止,如果没有提供任何选项,该程序什么也不做。
我在 stackoverflow 上搜索类似的问题,我发现有人使用 same issue,但他们的问题与 bash 相关,而不是 C。
如果有人有任何建议,我将不胜感激。谢谢。
【问题讨论】:
-
您的问题标题具有误导性,或者我不明白您在问题正文中要问什么
-
第二个黄色框是我正在尝试创建的功能。如果用户没有输入任何选项,它会默认调用 strupper 函数。抱歉,如果我不清楚。
-
您为什么不将您的
if (c == '?')案例放在switch声明中? -
为什么不设置一个代表你想要的动作的变量,初始化为一些默认动作?我忽略了什么吗?
-
我不太清楚你的意思。我对 c 真的很陌生,getopt 文档对我帮助不大。如果没有选项,我只想能够调用 strupper 函数。
标签: c command-line arguments command-line-arguments getopt