【发布时间】:2020-04-04 15:50:57
【问题描述】:
我尝试从命令行参数读取一个 URL(可以包含或不包含路径,例如 http://google.com 和 http://www.google.com/abc/dfg),然后将它们分成域名和路径,但结果似乎不正确,并且没有 valgrind没有显示错误,但 valgrind 显示错误。 我只是不知道如何解决它。有人可以帮忙吗?非常感谢!
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
char* domain;
char* path;
sscanf(argv[1], "http://%[^/]/%[^\n]", domain, path);
printf("domain: %s\n", domain);
printf("path: %s\n", path);
}
【问题讨论】:
-
scanf不会为domain和path分配存储空间。您必须传递有效的缓冲区。 -
您可以使用
strtok将域与字符串中的路径分开。 -
请注意
https。您首先使用strstr进行检查,结果为argv[1]。 -
那么我会在开始工作时 malloc 吗?但是我不知道域和路径是多长时间?