-1

C で http ヘッダーを解析していて、完全な URL からホスト名を差し引く必要があります。

完全な URL ( http://www.example.com/hello.html ) とパス名 (hello.html) を取得できましたが、(完全な URL - パス名) ホスト名 (example.com) を減算できませんでした。 .

Example full url: http://www.example.com/hello.html - DONE
host name: example.com - TODO
path name: /hello.html - DONE

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

3

memcpy次のように使用できます。

char *url = "http://www.example.com/hello.html";
// find the last index of `/`
char *path = url + strlen(url);
while (path != url && *path != '/') {
   path--;
}
// Calculate the length of the host name
int hostLen = path-url;
// Allocate an extra byte for null terminator
char *hostName = malloc(hostLen+1);
// Copy the string into the newly allocated buffer
memcpy(hostName, url, hostLen);
// Null-terminate the copied string
hostName[hostLen] = '\0';
...
// Don't forget to free malloc-ed memory
free(hostName);

これはideoneのデモです。

于 2013-05-02T16:37:55.843 に答える
0

次のようなことができます

char Org="http://www.example.com/hello.html";
char New[200];
char Path="/hello.html";
memcpy(New,Org,strlen(Org)-strlen(Path));
New[strlen(Org)+strlen(Path)]=0;
printf("%s\n",New+12);
于 2013-05-02T16:40:40.797 に答える