2012-10-15 3 views
-4

이 코드가 작동하지 않는 이유는 무엇입니까?함수에서 wchar_t에 대한 포인터를 반환합니다.

wchar_t path[300]; 
wchar_t *PathCreator(wchar_t *dir, wchar_t *fileName) 
{ 
    int j = 0; 
    while(j < 300) 
    { 
     path[j] = '\0'; 
     j++; 
    } 
    int i; 
    i = 0; 
    while(*dir != '*') 
    { 
     path[i] = *dir; 
     i++; 
     dir++; 
    } 
    wchar_t *t = fileName; 
    while(*t != '\0') 
    { 
     path[i] = *t; 
     i++; 
     t++; 
    } 
    path[i] = '\0'; 
    //std::wcout << path << std::endl; 
    return path; 
} 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    std::wcout << PathCreator(L"A",L"B"); 
} 
+3

당신이 "작동하지 않습니다"무엇을 의미합니까? –

+0

@ 루치아 Grigore 나는이 문제가 뭔지 모르겠다. void retrning 값으로 동일한 함수를 시도 할 때 vorks 값이 크지 만 배열에 포인터를 반환하려고하면 종료됩니다. – abilash

+0

'wchar_t' 타입의 변수와'char' 타입의 리터럴을 비교하고 있습니다. 문자 리터럴에'L' 접두사를 추가하십시오. 예 : :'L '*'' – halex

답변

1

루프는 dir의 끝을 확인하지 않는, 잘못된 것입니다. 그래서

while(*dir != '*' && *dir != '\0') 
{ 
    path[i] = *dir; 
    i++; 
    dir++; 
} 

하지

while(*dir != '*') 
{ 
    path[i] = *dir; 
    i++; 
    dir++; 
} 
관련 문제