Я новичок в C89 и не понимаю, как работают строки. Я разрабатываю на Windows, 7.C: Trouble with Strings
Вот что я пытаюсь сделать, в Java:
Вот моя неуклюжая попытка сделать это в 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
}
Update чтобы отразить ответы
для hostnameLength
14, hostname
является malloc()
«d 31 символа. Почему это происходит?
@ Rosarch, этот код не должен выделять 31, он должен выделить 15 ... вы уверены, что код, который вы показываете, - это то, что вы используете? Как вы проверяете выделенный размер? Я просто проверил и проверил, что у вас здесь, и я получаю ожидаемый результат. –