저는 C89를 처음 사용하여 문자열이 어떻게 작동하는지 실제로 이해하지 못합니다. 나는 7. 다음C : 문자열 관련 문제
내가 자바에서 수행하려고 무엇을 Windows에서 개발하고 :
여기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
}
업데이트 hostname
가 malloc()
인 답변 (14)의 hostnameLength
들어
을 반영 '31자를 거라고. 왜 이런 일이 생길까요?
@Rosarch, 그 코드는 31을 할당해서는 안되며 15를 할당해야합니다 ... 당신이 보여주고있는 코드가 당신이 실행하고있는 코드인지 확인하십시오. 할당 된 크기를 어떻게 확인하고 있습니까? 나는 방금 도망 가서 당신이 여기있는 것을 테스트했고, 나는 예상 한 결과를 얻었습니다. –