我写了一个小程序,如果参数没有传递,它会打印帮助信息。
如果我运行应用程序时不带参数
./myApp
它打印出来
./myApp --filename=file
我知道argv1包含第一个参数,但我不知道如何获取"=“后的文本,即文件名。
发布于 2011-10-04 17:15:42
您应该使用getopt()
或getopt_long()
,而不是手动解析字符串。
他们为你做那些肮脏的工作,按照人们期望的方式行事(虽然自写的解析器有时会让人感到困惑--一些人使用--arg value
,另一些人使用--arg=value
,有些人甚至使用-arg value
)
发布于 2011-10-04 17:14:12
你必须自己解析它。strtok
对此非常有用,另一个是strstr
。还有一些现成的库可以让你将这个功能导入到你的项目中,如果你不想自己写的话,比如this one。
发布于 2011-10-04 17:14:48
strchr()
返回一个指向字符的指针。接下来的字符就是你想要的
char *equals;
equals = strchr(argv[1], '=');
if (equals) {
printf("Rest of argument: %s\n", equals + 1);
} else {
printf("No equal found in argv[1] (%s)\n", argv[1]);
}
根据您的特定需求,您可能希望将它们复制到某个地方,或者直接从argv1参数中使用它们。
https://stackoverflow.com/questions/7645610
复制相似问题