일반적인 파일 저장은 fopen / fprintf / fclose를 이용한다.


m_result_file = fopen(".\\DATA\\data.csv", "a");

if(m_result_file != NULL)

{

fprintf(m_result_file, 변수1, 변수 2 ... 등등 + CString("\n")

);

fclose(m_result_file);

}


해당 코드로는 CString을 이용한 파일 쓰기가 안되고 구글 검색 시에 나오는 파일 쓰기는 오류 등이 있다,

그래서 구글링 결과 다음과 같이 처리할 경우에 문제가 없어서 남겨둔다.


추가 팁으로 파일 존재 유무 코드가 있다.


WIN32_FIND_DATA finddata;

ZeroMemory(&finddata, sizeof(finddata));

HANDLE hExist = FindFirstFile(filepath, &finddata);

if(hExist == INVALID_HANDLE_VALUE) {

//이 경우에 파일이 없다는 뜻.

}

TCHAR *szPath;

int nLen;


TCHAR szTemp[2];

WORD wd = 0xfeff;

memcpy(szTemp, &wd, 2); // CString 변환하여 파일에 쓸 경우에 반드시 open 후 첫번째 이 문자열을 넣어줘야 한다.

csvfile.Write(szTemp, 2);

titleStr.Format(_T("~~~~~~~~~~~~~~~~~~~~~~~~~~~~")); //CString을 적당히 편집한다.

szPath = new TCHAR[titleStr.GetLength() + 1];


_tcscpy(szPath, titleStr);


nLen = _tcslen(szPath);


csvfile.Write(szPath, nLen * sizeof(WCHAR));


csvfile.Close();

잘 써짐. 기존에서는 CSV의 컬럼 구분자가 ","였으나 이렇게 사용할 경우에 "\t"이 구분자가 되니 참고 한다.



by 무위자연 2015. 2. 13. 10:49