자바 배우고 다시 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://w
ww.linux-site.net/somewebsite", 80);
}
위에 상수배열부분과 변수배열부분으로 보낸걸 비교해서 찍
었는데요.
두 결과값이 다르거든요? 왜그렇죠??? 정말 이해가 안갑니다. 자세히보면요. 변
수로 넘겨준건 넘겨줄때부터 처음부터 완전히 subString함수로 안넘어 오는데 왜그런겁니까?
?? 저 좀 도와주세요.
ps. JAVA처럼 C++에서도 subString 구현해주는 함수 있나요?