>> Edit article
이름
제목
패스워드
자바 배우고 다시 C++로 돌아왔는데요. 정말 힘드네요 ㅜ.ㅜ 무엇이 문제인지 도통 모르겠습니다. 자바처럼 뭐가 잘못되었는지도 확실히 찍어주지도 않고... 후~~~~~~~ 이 소스좀 봐주세요~ 정말 부탁드립니다. 이것때문에 정말 엄청 삽질했네요. #include <stdio.h> #include <string.h> #define MAXSTRING 1024 #define MAXLINE 1024 class tmp { private: char *hostName; char *url; char *filePath; char *fileName; /* Action : url로 부터 hostname 과 file path를 분리한다. */ void splitHostnFile(); /* Action : fullstring을 받아들여 원하는 index를 짤라준다. */ char *subString(const char *original, int indexBegin, int indexFinish); public: /* 생성자 */ tmp(char *, int); }; tmp::tmp(char *fullstring, int portNumber) { url = new char(MAXLINE); strncpy(url, fullstring, 100); printf("url = %s", url); splitHostnFile(); } void tmp::splitHostnFile() { int jump, i; jump = 0; if(strstr(url, "http://") != NULL) { jump = 7; } else if(strstr(url, "ftp://") != NULL) { jump = 6; } // find hostName in url i = jump; while( *(url+ i) != '/') i++; // i 는 '/'의 자리를 가르키고 있다. printf("splitHostnFile url = %s", url); hostName = subString("http://www.linux-site.net/somewebsite", jump, i-1); //------> 이곳 : 이부분은 상수배열로 보냈구요. printf("splitHostnFile url = %s", url); filePath = subString(url, jump, i-1); //---->이곳 : 이부분은 변수배열로보냈습니다. } char *tmp::subString(const char *original, int indexBegin, int indexFinish) { char *returnString = new char(MAXSTRING); int i, indexReturn; indexReturn = 0; printf("original = %s", original); for( i = indexBegin; i < indexFinish + 1; i++) { *(returnString + indexReturn) = *(original + i); indexReturn++; } *(returnString + indexReturn) = ' '; // null printf("i = %d, indexReturn = %d , return = %s", i, indexReturn, returnString); return returnString; } int main(){ tmp *ptmp = new tmp("http://www.linux-site.net/somewebsite", 80); } 위에 상수배열부분과 변수배열부분으로 보낸걸 비교해서 찍었는데요. 두 결과값이 다르거든요? 왜그렇죠??? 정말 이해가 안갑니다. 자세히보면요. 변수로 넘겨준건 넘겨줄때부터 처음부터 완전히 subString함수로 안넘어 오는데 왜그런겁니까??? 저 좀 도와주세요. ps. JAVA처럼 C++에서도 subString 구현해주는 함수 있나요?
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved