如何使用getOpt确定C中是否没有给出选项?

时间:2016-02-16 00:23:34

标签: c command-line arguments command-line-arguments getopt

我正在研究一个简单的程序,它应该根据参数将字符串更改为全部大写或全部小写。例如,如果程序名称更改:

  

./ change -u thiswillbeuppercase

     

THISWILLBEUPPERCASE

     

./ change -l THISWILLBELOWERCASE

     

thiswillbelowercase

即使没有提供选项,如果我无法弄清楚默认情况下如何执行大写操作的问题。例如,这就是我希望它执行的方式:

  

./更改thiswillbeuppercase

     

THISWILLBEUPPERCASE

这是我目前的主要功能:

    Protected Sub ELegLogin(sender As Object, e As EventArgs)

        Dim str As string  = ConfigurationManager.AppSettings["E-leg"].ToString();

'Error: Identifier expected

        Response.Redirect(Str)

'Argument not specified for parameter 'Number' of 'Public Function Str(Number As Object) As String
    End Sub
End Class

}

我尝试在switch语句的默认部分调用strupper函数,但这似乎不起作用。截至目前,如果没有选项,该计划什么都不做。

我在stackoverflow中搜索类似的问题,我找到了same issue的人,但是他们的问题与bash而不是C有关。

如果有人有任何建议,我会非常感激。谢谢。

1 个答案:

答案 0 :(得分:2)

我会这样改变你的代码:

... several includes here...
int main(int argc, char *argv[]) {
    int c;
    while((c = getopt(argc,argv,"u:s:l:")) != -1){
    // ... no changes here ...   
    }
    if ( ( argc > 1 ) && ( c == (-1) ) ) { 
        // implement your default action here. Example
        // for ( int i = 1 ; i < argc ; i++ ) {
        //    strupper ( argv[i] ) ;
        // }
    } 
    return 0;
}