我正在尝试解析一个URL,并编写了以下代码:
#include <stdio.h>
int main() {
char host[100];
char port[100];
char path[100];
char prot[100];
char* url = "https://google.com:8000/foobar";
sscanf(url, "%s://%s:%s/%s", prot, host, port, path);
printf("Protocol: %s\n", prot);
printf("Host: %s\n", host);
printf("Port: %s\n", port);
printf("Path: %s\n", path);
return 0;
}
但是,它输出以下内容:
Protocol: https://google.com:8000/foobar
Host: å0&TFaa
Port:
Path:
我不确定为什么将我所有的字符串放入协议变量中,而不是将正确的部分放入每个变量中。有任何想法吗?
sscanf
贪婪。它会读取尽可能多的字符。
更改为使用:
char* url = "https://google.com:8000/foobar";
sscanf(url, "%[^:]://%[^:]:%[^/]/%s", prot, host, port, path);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句