"\x81" 이런식으로 printf를 해주면 0x81 번에 할당된 문자가 출력된다.
컴파일러 혹은 라이브러리 문제인지 해당 문자열의 버퍼는 unsigned char 여야 되며
char 일경우 오작동을 하는 경향이 보인다.

[링크 :  http://msdn.microsoft.com/en-us/library/h21280bw(v=vs.80).aspx]
[링크 :  http://abeldaos.tistory.com/4]
신고
Posted by 구차니

댓글을 달아 주세요

함수 포인터는 거의 쓸일이 없었는데 문득 보이길래 한번 시도~
int main() 안의 void (*funcpointer[5])(); 가 포인터 함수 배열이다.

만약, 
void *funcpointer[5];
라고만 선언하고, 변수를 넣으면 함수 호출시
error: called object ‘funcpointer[0]’ is not a function
요런 에러를 발생시켜준다.

void func1() {}
void func2() {}
void func3() {}
void func4() {}
void func5() {}

int main()
{
	void (*funcpointer[5])();

	funcpointer[0] = func1;
	funcpointer[1] = func2;
	funcpointer[2] = func3;
	funcpointer[3] = func4;
	funcpointer[4] = func5;

	(*funcpointer[0])();

	return 0;
}

[링크 : http://www.newty.de/fpt/index.html]
[링크 : http://stackoverflow.com/questions/252748/how-to-use-array-of-function-pointers]
신고
Posted by 구차니

댓글을 달아 주세요

한 커뮤니티 질문이 올라와서
혹시나 해서 해봤는데 헐.. -_-

#include 나
# include 나

아무튼 #으로 시작하기만 하면 문제없음!
신고
Posted by 구차니

댓글을 달아 주세요

GetTempFileName () 라는 함수로 임시파일이름을 생성할수 있다.
덤으로, 리눅스에서는 mktemp()

[링크 : http://linux.die.net/man/3/mktemp]
[링크 : http://linux.die.net/man/3/tmpfile]]

[링크 : http://www.codeproject.com/Messages/2942050/Creating-and-deleting-a-temp-file.aspx]
    [링크 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa364991(v=vs.85).aspx]
신고

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

함수 포인터 배열  (0) 2012.03.07
헐 # include 이게 되는거였다니!  (0) 2012.02.15
윈도우에서 사용할 임시파일이름 만들기  (0) 2011.10.24
CFileFind Class  (0) 2011.10.23
CFileDialog 말고 폴더 다이얼로그 없나?  (0) 2011.10.22
ctime()  (2) 2011.07.06
Posted by 구차니

댓글을 달아 주세요

특정 디렉토리의 파일목록이나 특정 확장자 / 파일이름 등으로 검색한 목록을 얻어낼수 있는 클래스이다.
하지만 "목록"은 얻을지 언정 몇개인지는 while 루프를 돌려야만 하니 조금 불편할수도 있다.

void main()
{
   CFileFind finder;
   BOOL bWorking = finder.FindFile("*.*");

   while (bWorking)
   {
      bWorking = finder.FindNextFile();

         if(!finder.IsDirectory())
            cout << (LPCTSTR) finder.GetFileName() << endl;
   }
}

[링크 : http://msdn.microsoft.com/ko-kr/library/f33e1618(v=vs.80).aspx]
[링크 : http://mnlt.tistory.com/7]
[링크 : http://www.gungume.com/37]
신고
Posted by 구차니
TAG CFileFind

댓글을 달아 주세요

가끔보면 폴더만 선택이 가능한 다이얼로그가 있는데
CFileDialog에 옵션줘서 하는줄 알았더니 -_-
SHBrowseForFolder() 라는 Win32API를 이용하는 것이었다!


void CtracerDlg::OnBnClickedButton1()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	ITEMIDLIST*  pildBrowse;
	TCHAR   pszPathname[MAX_PATH];
	BROWSEINFO  bInfo;
	memset(&bInfo, 0, sizeof(bInfo));
	bInfo.hwndOwner   = GetSafeHwnd();
	bInfo.pidlRoot   = NULL;
	bInfo.pszDisplayName = pszPathname;
	bInfo.lpszTitle   = _T("디렉토리를 선택하세요");
	bInfo.ulFlags   = BIF_RETURNONLYFSDIRS; 
	bInfo.lpfn    = NULL;
	bInfo.lParam  = (LPARAM)(LPCTSTR)"C:\\";
	bInfo.lParam  = (LPARAM)NULL;
	pildBrowse    = ::SHBrowseForFolder(&bInfo);
	if(pildBrowse)
	{
		SHGetPathFromIDList(pildBrowse, pszPathname);
		m_editPath.SetWindowTextW(pszPathname);
	}

}

[링크 : http://jeylee1031.tistory.com/entry/MFC-폴더-dialog-띄우기]
[링크 : http://softk.tistory.com/entry/SHBrowseForFolder-UI를-수정하자]
[링크 : http://msdn.microsoft.com/en-us/library/windows/desktop/bb762115(v=vs.85).aspx]
신고

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

윈도우에서 사용할 임시파일이름 만들기  (0) 2011.10.24
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
Posted by 구차니

댓글을 달아 주세요

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 ]

한글로 번역이 잘못된건지 한글로는 모호하지만,
일단 정의(Definition)는 말그대로 어떠한 것을 정의"" 한다.
실제로 구체화/구현되지 않고, 설계도 라던가 단순하게 알려주는 역활을 한다.
하지만, 선언은 구체화를 한다. (메모리상에 자리를 차지한다)

그래서 우리가 변수를 만들때 "선언" 한다고 하고
구조체를 만들때 "정의" 한다고 했던 것이다.

[링크 : http://dstein.egloos.com/2563434]
[링크 : http://rookiecj.tistory.com/24]
[링크 : http://www.crazyowl.com/755]


----
으아아.. 지금보니 거꾸로 한게 맞네 ㅠ.ㅠ
딱다구리님 죄송합니다 ㅠ.ㅠ 
신고

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

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
수직탭이 모야? (what is the Vertical tab?)  (4) 2010.07.19
Posted by 구차니

댓글을 달아 주세요

  1. 선언은 "난 이걸 쓰겠어"라고 선언하는 것이고,
    정의는 "이건 이렇게 생긴 것이다"라고 정의하는 것입니다.
    좀 다르죠.

    2010.10.04 21:58 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 선언과 정의만 떼어놓고 말하면 비슷해서 좀 많이 혼동되기는 해요 ㅎ

      2010.10.05 00:01 신고 [ ADDR : EDIT/ DEL ]
  2. 어려워요!

    2010.10.04 23:17 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 한글로 보면 오히려 더 헷갈릴때가 많아요. 그냥 쓰는거지.. =ㅅ=

    2010.10.05 13:39 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • ㅋㅋ 그래서 개발자는 영어를 좋아하지만 잘은 못하는 딜레마가 있죠 ㅋㅋ

      2010.10.05 14:42 신고 [ ADDR : EDIT/ DEL ]
  4. cron79@nate.com

    나한테 사랑만 주지말고 지식좀 줘바ㅋㅋ

    2010.10.06 08:30 신고 [ ADDR : EDIT/ DEL : REPLY ]
  5. 딱따구리

    본문에서 선언과 정의의 의미가 바뀌어져 있네요.

    2011.03.22 20:18 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 오늘따라 글이 잘못된걸 지적해 주시는 분들이 많아졌네요 ㅎㅎ

      언어가 비슷해서 혼동이 오지만
      struct name {}; 은 변수를 정의하고
      struct name val;은 변수를 선언하는 거죠.

      정의는 설계도를 만드는 것이고
      선언은 실제로 메모리에 할당을 하는것 이구요.

      그렇기 때문에 변수는 선언이고
      구조체에 들어가는 변수들을 만들어 놓는 것은 정의라고 했습니다.

      2011.03.22 20:26 신고 [ ADDR : EDIT/ DEL ]

머 언젠간 쓸일이 있겠지 -_-


GetPrivateProfileString()

[링크 : http://en.wikipedia.org/wiki/INI_file]
    [링크 : http://msdn.microsoft.com/en-us/library/ms724353%28VS.85%29.aspx]
신고
Posted by 구차니

댓글을 달아 주세요

  1. Function Description
    GetPrivateProfileInt Retrieves an integer associated with a key in the specified section of an initialization file.
    GetPrivateProfileSection Retrieves all the keys and values for the specified section of an initialization file.
    GetPrivateProfileSectionNames Retrieves the names of all sections in an initialization file.
    GetPrivateProfileString Retrieves a string from the specified section in an initialization file.
    GetPrivateProfileStruct Retrieves the data associated with a key in the specified section of an initialization file.
    GetProfileInt Retrieves an integer from a key in the specified section of the Win.ini file.
    GetProfileSection Retrieves all the keys and values for the specified section of the Win.ini file.
    GetProfileString Retrieves the string associated with a key in the specified section of the Win.ini file.
    WritePrivateProfileSection Replaces the keys and values for the specified section in an initialization file.
    WritePrivateProfileString Copies a string into the specified section of an initialization file.
    WritePrivateProfileStruct Copies data into a key in the specified section of an initialization file.
    WriteProfileSection Replaces the contents of the specified section in the Win.ini file with specified keys and values.
    WriteProfileString Copies a string into the specified section of the Win.ini file.

    http://msdn.microsoft.com/en-us/library/ms724875%28v=VS.85%29.aspx

    레지스트리를 다루는 함수들인데... 리눅스에서는 저게 안되는.. -_-;;; 그래서 INI파싱 라이브러리를 사용해요.
    iniparser라고.. 있는데.. INI 파싱라이브러리로 한 6년째 사용중인데 문제 안일으키고 동작 잘하네요. ㅎㅎ

    2010.09.28 10:18 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 리눅스에서는 readline() 함수로 읽은다음 숫자다음 =를 찾아내곤했는데 라이브러리가 있었군요!
      다음에 쓸기회가 생기면 써보겠지만 음..

      리눅스에서 개발이라면 다국어에서 po(gettext)를 써볼려구요 ㅎ 부디 ini 파싱할일이 안 생기기를 빌어야죠 ㅋ

      2010.09.28 10:58 신고 [ ADDR : EDIT/ DEL ]

WinMain은 어플리케이션(독립 프로그램)의 ENTRY point 이고
DllMain은  Dll(라이브러리)의 ENTRY point 이다.

리눅스의 so 에서는 이런 ENTRY point가 없었는데, 먼가 생소한 느낌 -ㅁ-!

int CALLBACK WinMain(
  __in  HINSTANCE hInstance,
  __in  HINSTANCE hPrevInstance,
  __in  LPSTR lpCmdLine,
  __in  int nCmdShow
);

[링크 : http://msdn.microsoft.com/en-us/library/ms633559%28VS.85%29.aspx] WinMain

BOOL WINAPI DllMain(
  __in  HINSTANCE hinstDLL,
  __in  DWORD fdwReason,
  __in  LPVOID lpvReserved
);

[링크 : http://msdn.microsoft.com/en-us/library/ms682583%28VS.85%29.aspx] DllMain

Dll 역시 굳이 엔트리 포인트가 필요는 없으나, 단순한 함수의 모음이 아닌 특정 모듈로서의 Dll 이라
초기화가 필요하다면, 엔트리 포인트를 써야 한다고 한다.
[링크 : http://todayis.tistory.com/210]

그래도 역시 DllMain은 비어있는게 정석?!
[링크 : http://www.jiniya.net/tt/788]
신고
Posted by 구차니

댓글을 달아 주세요