Я новичок в 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()
d 31 символов. Почему это происходит?