본문 바로가기

C

c ini 읽는 모듈.. 급하게 필요해서 c 언어로 된 ini 읽는 모듈을 작성했다. 포함 된 내용은 아래와 같다. - trim 함수 사용 (http://newtype.pe.kr/361) - windows api의 ini 읽는 함수 원형을 흉내 냈다.(MSDN) 사용 설명 설정파일을 읽어 들이기 위한 Lib Pulibc 함수 int GetProfileString(FILE *fp, char *app, char *key, char *ret, int size); int GetProfileInt(FILE *fp, char *app, char *key, int *ret); 사용법 FILE *fp=0; if ((fp=fopen("/home/config/sample.ini", "r")) == 0 ) { stdout( "File open er.. 더보기
trim 이 함수는 프로젝트 하면서 수 십번은 만든거 같다. 매번 만들고, 보관 안해서.. 다음 프로젝트 땐 또 만들고.. 흐흐. 아무리 단순한 함수도 깨작 거리다 보면 1시간인데.. 매번 반복.. 이제 잊지 말자 ^^ $ cat trim.c #include /* 앞뒤 공백 제거 */ char* trim( char *s ) { char *f=s, *e=0, *c=s; /* 뒤쪽 공백 제거 */ e=s +(strlen(s)) -1; while(*e==' '&&s 더보기
애플리케이션 개발시의 메모리 디버깅 : 메모리 누수 발견 기법 원문 출처 http://www-128.ibm.com/developerworks/kr/library/opendw/20061219/ 필자는 DVD 레코더와 셋톱박스의 복합 모델을 개발하는 팀에 소속되어 있다. 현재 유럽에서는 아날로그 방송을 디지털로 서서히 대체하고 있기 때문에, 관련 제품의 개발 요청이 쇄도하고 있다. 얼마 전 유럽을 타깃으로 3개의 유사 모델(D197, D198, D199)을 개발하고 있을 때의 일이다. 우여곡절 끝에 기본 모델인 D197 개발을 마치고 양산 시켰으며, D198도 완료하여 QA 그룹에 테스트를 의뢰한 후 결과를 기다리고 있었다. 팀원들 모두, D197 모델이 별 이상 없었으니 부가기능을 조금 추가한 D198 역시 무난히 양상 단계로 넘어갈 것이라고 판단, 모처럼의 한가한 .. 더보기
LPTSTR 자료형의 문자열 치환 UINT Replace( LPTSTR target, LPCTSTR source, LPCTSTR find, LPCTSTR replace ) { UINT i, nCount=0; BOOL bFind; LPCTSTR ps, pf; LPTSTR buf=NULL, pt = target; size_t nLenSrc = _tcslen( source ); buf = new TCHAR[nLenSrc+1]; if ( buf == NULL ) return NULL; _tcsncpy( buf, source, nLenSrc ); buf[nLenSrc] = 0; for(ps=buf; *ps; ps++) { if ( find[0] == *ps ) { bFind = TRUE; for(pf=find+1, i=1; *pf; pf++, i.. 더보기
문자열 분할시, 특정 번째 문자열 얻기 제목이 어렵네요.. ㅡㅡ; 소스 보시면 어려운것 없으니 금방 이해 하실겁니다. 좋은 시간 되세요..^^ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- //--------------------------------------------------------------------------// //Fuction : Splite //Parameter : LPTSTR lpszDest, LPCTSTR lpcszSorc, TCHAR cSep, int nIndex //Return : LPCTSTR //Note : lpcszSorc를 cSep로 나누어서 nIndex번째 문자열을 lpszDest에 넣는다. //---------------------.. 더보기
전체경로를 받아 파일이름을 제외한 경로만 구하기 //-------------------------------------------------------------------------------------// // Function : OnlyDirecory // Parameter : CString strMoney // Return : LPTSTR strFull // Note : 인자로 받은 전체파일이름의 파일이 있는 경로를 리턴한다. //-------------------------------------------------------------------------------------// LPTSTR OnlyDirecory(LPTSTR strFull) { TCHAR* pPos = strFull + strlen( strFull ); while ( s.. 더보기
Http프로토콜을 이용한 파일 다운로드 [CODE type=c++] //-------------------------------------------------------------------------------------// // Function : GetFile // Parameter: LPCTSTR url, LPCTSTR filename // Return : CString // - 성공하면 "YES" 실패하면 에러메시지를 반환 // Note : url의 파일을 받아서 filename에 저장한다. // LPCTSTR url - http프로토콜을 이용해 받아올 파일의 전체경로 // LPCTSTR filename - 파일을 저장할 local경로 //----------------------------------------------------.. 더보기
Http프로토콜을 이용한 파일 업로드 http서버에 올리는 소스이기 때문에 당연히 서버에 업로드 권한이 있어야 합니다. [CODE type=c++] void HttpPutFile(LPCTSTR wszServerURL, LPCTSTR wszRemoteFilePath, LPCTSTR wszLocalFilePath, TCHAR nPort, LPCTSTR wszLoginUserID, LPCTSTR wszLoginPassword ) { /* TCHAR wszServerURL[100] = L"solergy.com"; TCHAR wszLocalFilePath[100] = L"\Program Files\hanaro\Sign_AS\7250.bmp"; TCHAR wszRemoteFilePath[100] = L"/hanaro/sign/as/7250.bmp"; .. 더보기
컴파일시 꼬이는 헤더파일 방지.. #if !defined(HEADERFILE) #define HEADERFILE class MyClass { ... . .. . . . . . . . . } --- 해더 파일의 내용 --- #endif --------------------------------------------------------- 이렇게 해주면 HEADERFILE라는 키워드가 define되어 있으면 #if ~~ #endif 안의 내용은 컴파일 되지 않습니다. 처음 한번만 컴파일하고, 다시는 컴파일 하지 않게 되는거죠. 그래서 해더파일이 꼬여있어도 에러를 발생하지 않습니다. 보통 위저드를 통해 클래스를 생성하면 HEADERFILE라는 키워드 대신. 클래스이름과 UUID가 조합되어 생성되더군요. 즐프~ 더보기