'CTime'에 해당되는 글 2건

  1. 2011.07.06 ctime() (2)
  2. 2009.06.23 CFile / CTime
time_t는 32bit(4byte) 의 데이터이고
1970년 1월 1일 부터의 epoch를 기준으로 저장을 한다.
특정값을 넣어서 테스트 해보는 샘플 코드는 아래와 같다.

/* ctime example */
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime = 0x45984f00;

//  time ( &rawtime );
  printf ( "The current local time is: %s", ctime (&rawtime) );

  return 0;
} 

머 결과는 아래와 같이
$ ./a.out
The current local time is: Mon Jan  1 09:00:00 2007 

엑셀에서 계산해보니
1167609600  19460160    324336    13514   37.02465753
                   /60         /60         /24      /365

1970년 부터 epoch 이므로
37년 후인 2007년이 대충 맞는듯! 

[링크 : http://www.cplusplus.com/reference/clibrary/ctime/ctime/]
[링크 : http://linux.die.net/man/3/ctime]
신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

CFileFind Class  (0) 2011.10.23
CFileDialog 말고 폴더 다이얼로그 없나?  (0) 2011.10.22
ctime()  (2) 2011.07.06
선언과 정의(Declaration & Definition)  (10) 2010.10.04
ini 파일 내용 파싱하기  (2) 2010.09.27
WinMain 과 DllMain  (0) 2010.09.09
Posted by 구차니
TAG CTime

댓글을 달아 주세요

  1. 항상 열씸이시네요~~~^^

    2011.07.08 14:28 신고 [ ADDR : EDIT/ DEL : REPLY ]

CTime은 실질적으로 처음 사용하는 녀석인데.. 이름대로, Time/Date 관련 클래스이다.
사용방법은 매우 직관적으로
CTime::GetCurrentTime(); 를 사용하여 현재시간을 받아 온 후
GetYear() GetMonth() GetDay() GetHour() GetMinute() GetSecond()
메소드 들을 이용하여 시간 정보를 받아와서 사용하면 된다.



CFile 역시 실질적으로 처음 사용하는 녀석인데, 평소 습관대로 fopen()을 사용하려다
큰 마음먹고, MFC 답게 CFile 클래스로 처리해 보았다.


아무튼 플래그들은 다음과 같다.
	enum OpenFlags {
		modeRead =          0x0000,
		modeWrite =         0x0001,
		modeReadWrite =     0x0002,
		shareCompat =       0x0000,
		shareExclusive =    0x0010,
		shareDenyWrite =    0x0020,
		shareDenyRead =     0x0030,
		shareDenyNone =     0x0040,
		modeNoInherit =     0x0080,
		modeCreate =        0x1000,
		modeNoTruncate =    0x2000,
		typeText =          0x4000, // typeText and typeBinary are used in
		typeBinary =   (int)0x8000 // derived classes only
};

주로 쓰이는건, CFile::modeCreate와 CFile::modeWrite인데, fopen()과 비교하자면 "w" 에 속한다.
fopen()에서 사용하던 추가모드(Append)가 없어서 고심을 하다가, 아래의 사이트에서 발견하게 되었다.

outFile.Open("myFile.txt", CFile::modeNoTruncate | CFile::modeCreate | CFile::modeWrite); 
outFile.SeekToEnd(); 

[링크 : http://www.eggheadcafe.com/forumarchives/vcmfc/jun2005/post23419185.asp]

아무튼
CFile::modeWrite만 사용하면, Create가 되지 않아 파일이 없을 경우 에러가 발생한다.

CFile::modeCreate | CFile::modeWrite 를 사용하면, 덮어 써지는데 써진 내용이 이전에 쓰여진 내용보다 적으면
이전 내용이 남아 있는다. 비유를 하자면, 수정(Overlay)모드에서 가장 첫 줄 첫 칸부터 내용을 치는 것과 비슷하게 작동한다.
테스트 해봐야 하겠지만, 굳이 CFile::modeNoTruncate 를 사용하지 않더라도,
SeekToEnd()만 적용해도(Create/Write 사용) 충분하지 않을까 생각이 된다.


신고
Posted by 구차니

댓글을 달아 주세요