Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何解析不同类型的参数?_C_Terminal_Command Line Arguments_Getopt - Fatal编程技术网

C 如何解析不同类型的参数?

C 如何解析不同类型的参数?,c,terminal,command-line-arguments,getopt,C,Terminal,Command Line Arguments,Getopt,我的程序需要支持通过终端获取这些参数: -stdin后跟随机数 其他长类型的选项后跟一个数字或无 档案 网站 我的问题是,尽管getopt适用于前两种情况,但它似乎不适用于文件和网站,因为它们不是以“-”开头的。有什么方法可以让它工作吗?或者我必须使用for循环和某种模式匹配来通过*argv[]吗?的参数 int main( int argc, char * argv[] ) 您可以遍历argv中的每个字符串,并以您需要的任何方式对其进行解析 我不相信有比这更雄辩的解决方案想到的第一个解决

我的程序需要支持通过终端获取这些参数:

  • -stdin后跟随机数
  • 其他长类型的选项后跟一个数字或无
  • 档案
  • 网站

我的问题是,尽管getopt适用于前两种情况,但它似乎不适用于文件和网站,因为它们不是以“-”开头的。有什么方法可以让它工作吗?或者我必须使用for循环和某种模式匹配来通过*argv[]吗?

的参数

int main( int argc, char * argv[] )
您可以遍历argv中的每个字符串,并以您需要的任何方式对其进行解析


我不相信有比这更雄辩的解决方案

想到的第一个解决方案可以是按照程序逻辑要求适当地解析
argv
输入字符串。另一方面,您可能希望使用更优雅的方式来处理您正在搜索的任何模式。此时,正则表达式是您的朋友。您可以在源代码中包含
regex.h
,并深入到regexp的神奇世界


检查一下:

*argv[]带有for循环和某种模式匹配?这正是你应该做的。循环,strcmp,然后必须使用[i]和[i+1]进行操作。能否仅将字符串的前4个字母与strcomp进行比较?我能不能只检查我的参数是否以http开头?