: 위에 상수배열부분과 변수배열부분으로 보낸걸 비교해서 찍었는데요.
: 두 결과값이 다르거든요? 왜그렇죠??? 정말 이해가 안갑니다.
라고 하셨는데.. 두 결과값이 어떻게 다른가요?
그리고 님께서 말씀하신 "변수배열"이란 문자열의 포인터값(char* url)을 지
칭하는 건가요?
: url = new char(MAXLINE);
또 윗 부분은 url = new char[MAXLINE] 처럼 대괄호를 써줘야 하는 건 아닌
지.. (이 부분은 제가 Unix C++를 잘 몰라서 자신이 없네요)
수고스럽겠습니다만 실행 결과를 다시 한번 올려주세요.
////////////////////////////////////////////////////////////////////
: 자바 배우고 다시 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 구현해주는
함수 있나요?