본문 바로가기

C++

[C/C++] 문자열 다루기(1) - 초기화 C/C++로 작업을 하면서 가장 신경 쓰이는 부분 중 하나가 아마문자열과 문자를 다룰 때 같습니다. NULL 포인터면 포인터가 죽고,작은 실수로 인하여 자칫 잘못하면 strcpy나strlen 등 문자열 함수를 부르면 죽어버리는 경우가 흔하죠. 특히나 C/C++을 이제 막 시작하신 분들이나 자칫 잘못 이해하고 계신 분들은 이런 함수들을 부르기가 꺼려지실꺼라고생각됩니다.(그 중에 한명이 저구요.) 그래서 정리하는 겸, 정리 한번 하고 넘어가려고 합니다. 환경: O.S - Windows 7 Tool - Visual Studio 2008 + sp1. Type - Win32 Console Project (대부분의 경우, 글로벌변수로 char형 배열 인스턴스를 잡고, 함수내에서는 char* 로 조작하도록 하였습니다.. 더보기
[C++] Function Pointer(3) (Solution) It's my solution file compressed by zip. * With finishing * Maybe, it would be last about the test code of the function pointer. Later, I'm not sure whether I'm going to write about the function pointer in my server model (because there are so many extra-informations to explain). - ps. This blog is for my English abilities, and I'm not good at communicating in English. If you see grammatic, synt.. 더보기
[C++] Function Pointer(2) (in class & with STL) * Introduction * Here is my second experience. I've often used class in C++, and I finally made it. * Function Pointer in class (code & result)*#include class cTemp1 { private : int m_X ; int m_Y ; void (cTemp1::*m_PtrF1)(void) ; int (cTemp1::*m_PtrF2)(int _x, int _y ) ; public: cTemp1(void); ~cTemp1(void); void Func1(void) ; int Func2(int _x, int _y) ; void Run() ; }; cTemp1::cTemp1(void) : m_X.. 더보기
[C++] '\0' & '\n' With testing length of characters, I discovered very harm misunderstanding. I usually wrote '\n' to mean 'NULL', but it's terribly wrong. Here is my source code. * Code * #include #include #include int main() { char* Str1 = "Count." ; char* Str2 = "Count.\0" ; char* Str3 = "Count.\n" ; wchar_t* wStr1 = L"Count." ; wchar_t* wStr2 = L"Count.\0" ; wchar_t* wStr3 = L"Count.\n" ; std::cout 더보기
[Server/Client] 기본함수로 구현한 에코 서버 구현환경 : 비쥬얼 스튜디오 2008 구현일시 : 2009년도 초 네트워크 기반 : TCP/IP, WindowsSocketProgramming 작성자 : 이영득 이제 저도 공부시작한지 5~6개월 되는것 같네요. 이 소스는 올해 초쯤 서버 공부를 하면서 제일 처음 짜본 소스입니다. 기본 클래스 구성은 Acceptor, Session, Err 이렇게 3개를 가지고 있는데, Err은 C언어의 함수개념으로 생각하고 모든 클래스에서 부를수있도록 정의했었군요. 여전히 제 서버의 기반은 비슷합니다. 순서만 잘 알아두시면 TCP/IP 접근은 굉장히 쉬운것같네요. WSA 초기화 ->SOCKET 초기화 -> Bind(서버정보) -> Listen(대기상태로전환) -> (1번 루프시작) Accept(클라이언트접속대기) ->(.. 더보기
[C++] Queue Linked List 작성 이번엔 큐입니다. Stack에서는 맨 앞에있는 Top만 참조했었습니다. Queue의 개념은 이렇습니다. 가장 먼저들어온 녀석을 가장 먼저 처리해주는겁니다. 예로 매표소에 줄서있는 모습을 상상하시면 되는데요. A부터 순서대로 G까지 줄을 섰다고 가정하면 A B C D E F G 순으로 줄을 섰겠죠? 여기서 Queue자료형에서는 A를 가장 먼저 처리해줍니다. 먼저 줄선 사람들을 먼저처리해줘야 공평하겠죠?? 가장 먼저 들어온 A를 처리하면 B C D E F G 가 되겠네요 Queue에서는 빠른 처리를 위해 Front와 Rear 두개의 포인터변수를 둡니다. 앞쪽을 처리한다고하고(처리후 삭제) 뒷쪽에 새로운 데이터들이 줄을 선다고했을때 매번 List처럼 포인터를 끝까지 옮겨가면 시간적으로 비효율적이겠죠. 자료들이.. 더보기
[C++] STACK Linked List 작성 이번엔 Stack입니다. Stack이란, 리스트의 한가지 특수구조로 봐도 될것같은데요. 위로 쌓이는 물건들이라고 생각하면 쉽습니다. 맨처음 놓인 물건이 A 라고 하고 순서대로 G까지 쌓는다면, A B C D E F G 가 되겠죠? 맨 처음 들어온건 A이고 맨 나중에 들어온건 G입니다. 자, 여기서 제가 이것들을 옮기려고 합니다. 바닥에서부터 위로 쌓았다면 가장먼저 손이 가는것은?? G겠죠. 바닥위에 있는 A를 만지려면 위에있는 G F E D C B 를 모두 치워야 합니다. 이런 개념인데요. 맨 나중에 들어온것을 가장 먼저 처리하는 방식입니다. List라는것은 임의의 장소에 들어가도 무관합니다. 그러나, Stack은 임의의 장소가 아니라 Top(List에서 Head)만을 접근하는 방식입니다. List에서 .. 더보기
[C++/자료구조] Simple Linked List 작성 단순연결리스트라고 불리우는 자료형을 클래스로 작성해봤습니다. 선언부만 옮겨서 객체사용법만 설명드리고 자세한건 직접 다운받아 돌려보세요~ 작성된 환경은 비쥬얼스튜디오 2008입니다. 자 그럼 "list.h" 헤더파일을 옮겼습니다. typedef struct node { int Data ; struct node* Next ; } Node ; // 노드 구조체 정의 인트형의 데이터와 구조체로 정의되어 있는 노드를 가르키는 포인터변수 Next가 정의되어있습니다. 정수형변수 한개와 어떤 노드를 지정할 포인터변수 한개가 구조체로 묶여있네요. typedef Node* Nptr ; // 노드 포인터타입 정의 그리고 위의 구조체를 가르키는 포인터를 앞으로 Nptr이라고 하겠습니다. 소스코드에 별(*)이 덕지덕지 붙으면 .. 더보기