【发布时间】:2017-08-02 12:32:53
【问题描述】:
我正在尝试遍历 C 中的输入参数,我将其存储在指向 char 的指针中,如下所示:const char *page = argv[1];
现在参数将是一个 http 地址,所以它可能看起来像这样:
http://host:port/folder1/folder2/file.jpg
我想要的是:解析这个字符串并将其分隔为子字符串
char host = "host";
char port = "port";
char path = "/folder1/folder2/file.jpg";
char file = "file.jpg";
所以我认为一个简单的 for 循环可以计算斜杠的数量,例如可以解决问题。
int slash_cnt = 0;
int i = 0;
for (i = 0, page[i] != '\0', i++)
{
if (strcmp(&page[i], "/"))
{
slash_cnt++;
}
}
但这不起作用。
如果有人可以在这里帮助我,甚至建议一种更好的方法来解析输入中指定的 http 地址并相应地分隔它,我将非常感激!
【问题讨论】:
-
好吧,我刚刚尝试编写自定义解析器,但您可以看到它不起作用,这就是我问这个问题的原因:)
-
strcmp()比较字符串,而不是单个字符或字符串的一部分。 RTFM。 -
好吧
if (strcmp(&page[i], "/"))可以简化为if (page[i] == '/'))。您能否更清楚地说明您希望这个解析器做什么?如果你想清理一些东西,你可以拥有一个char*数组并通过枚举访问它们。无论如何,最好的办法是在指针 current pos 上调用strcpy- 您找到斜线(或字符串的乞求)的最后一个 pos。 -
@George -
strcmp(&page[i], "/")不等于page[i] == '/'。
标签: c command-line-arguments argv