私は C89 が初めてで、文字列の仕組みがよくわかりません。私はWindows 7で開発しています。
Javaで私がやろうとしていることは次のとおりです。
String hostname = url.substring(7, url.indexOf('/'));
C89でこれを行う私の不器用な試みは次のとおりです。
// well formed url ensured
void get(char *url) {
int hostnameLength;
char *firstSlash;
char *hostname;
firstSlash = strchr(url + 7, '/');
hostnameLength = strlen(url) - strlen(firstSlash) - 7;
hostname = malloc(sizeof(*hostname) * (hostnameLength + 1));
strncpy(hostname, url + 7, hostnameLength);
hostname[hostnameLength] = 0; // null terminate
}
回答を反映するように更新する
hostnameLength
14 のhostname
場合、malloc()
31 文字です。なぜこれが起こるのですか?