전체 글 116

[C/C++] 코드 내 에서 Hex Editor 같이 바이너리 출력하기(Binary output like Hex Editor in code)

안녕하세요 JollyTree (•̀ᴗ•́)و 입니다. 대부분의 워드, 멀티미디어, 압축 등의 프로그램들은 동영상, 압축, 그림 등 바이너리 파일을 대부분 사용하며 코딩을 하다보면 바이너리 파일을 읽고 써야 할때가 자주 발생합니다. 010Editor, Ultra Editor, Hex Editor, Hxd 등은 바이너리 파일을 아주 보기 쉽게 16진수 Hex 코드로 보여줍니다. 그리고 사용자 설정에 맞게 16바이트, 32바이트 등으로 정렬을 해서 편의를 제공하기도 합니다. 텍스트 데이터는 디버거나 코드상에서 printf, fprintf, puts 등의 함수로 출력하여 바로 확인이 가능하지만, 내가 짠 프로그램이 제대로 바이너리 파일을 읽고 썼는지, 소켓(Socket)으로 송·수신은 제대로 되었는지 등을 코드..

[C/C++] 시간 간격 계산하기(calculate the time interval : scanf, strncpy, atoi functions

[C/C++] 시간 간격 계산하기(calculate the time interval : scanf, strncpy, atoi functions examples) 안녕하세요 JollyTree(•̀ᴗ•́)و입니다. 오늘은 입력한 두 시간 사이의 간격을 계산하는 프로그램을 작성해 보려고 합니다. 입력과 출력은 다음과 같습니다 [입력 & 출력] 첫 번째 줄에 시작 시간을 입력하고, 두 번째 줄에 종료 시간을 입력합니다. 입력은 hhmmss(175102)형태이며, 만약 175102를 입력했다면 이는 17시51분02초를 나타냅니다. 당연히 종료시간은 시작 시간보다 이후이어야 합니다. 입력 예시) 102153 211523 출력예시) 10:53:30 예제(Example): 1 2 3 4 5 6 7 8 9 10 11 1..

[C/C++] Visual Studio(VC++)에서 pthread 사용하기(POSIX Threads Programming : pthread_c

[C/C++] Visual Studio(VC++)에서 pthread 사용하기(POSIX Threads Programming : pthread_create, pthread_join functions examples) 안녕하세요 JollyTree(•̀ᴗ•́)و입니다.오늘은 pthread(POSIX Thread) 라이브러리를 사용하는 예제를 포스팅하고자 합니다. 쓰레드를 생성, 이용하는 방법은 여러가지 방법이 있는데 그 중 한가지 방법이 pthread를 이용한 방법입니다. 다음은 pthread 사용 예제로 3개의 쓰레드(Thread)를 생성입니다. 쓰레드 함수(thread_func)에서 프로세스 ID와 쓰레드 ID를 구하여 출력합니다. 예제(Example): 1234567891011121314151617181..

[C/C++] 바이너리 파일 쓰고 읽기(binary file write & read : fopen(), fwrite(), fread(), fcl

[C/C++] 바이너리 파일 쓰고 읽기(binary file write & read : fopen(), fwrite(), fread(), fclose() functions example) 안녕하세요 JollyTree (•̀ᴗ•́)و 입니다. 우리가 사용하는 대부분의 프로그램들은 HWP, PPTX, JPG, DOCX, GIF 등의 바이너리 파일을 사용합니다. 이런 파일들은 저마다의 복잡한 포맷을 가지고 있는데요. 아래 예제 코드는 단순한 바이너리 파일을 쓰고 읽는 방법에 대한 예제입니다. 바이너리 파일을 쓰는 함수인 write_file()과 바이너리 파일을 읽는 함수 read_file()로 구성되어 있으니 쉽게 보실 수 있을 것입니다. 예제(Example):123456789101112131415161718..

[C/C++] 동적으로 메모리 할당 하기(dynamic memory allocation : malloc(), calloc(), free() fu

[C/C++] 동적으로 메모리 할당 하기(dynamic memory allocation : malloc(), calloc(), free() functions example) 안녕하세요 JollyTree입니다. 코딩을 하다보면 char buf[100];과 같이 버퍼의 크기를 미리 할당할 수 있지만, 동적으로 메모리를 할당했다가 해제해야 하는 상황이 아주 많이 발생합니다. 이 때 사용할 수 있는 대표적인 함수가 malloc(), calloc()함수입니다. 두 함수는 할당한 메모리를 초기화하느냐 그렇지 않느냐의 차이가 있으니, 참고하여 사용하면 좋을 것 같습니다. malloc(), calloc()함수 호출 후의 메모리 상태 비교 buf1 = (char*)malloc(sizeof(char) * 50); //코드..

[C/C++] 특정 문자를 구분자로 하여 문자열 자르기(split a string with delimiter : strtok function e

[C/C++] 특정 문자를 구분자로 하여 문자열 자르기(split a string with delimiter : strtok function example) 안녕하세요 JollyTree입니다. C언어로 코딩을 하다보면 문자열 복사 부터 다양한 형태의 문자열을 다루게 됩니다. 대표적인 것이 "num1;num2;num3;num4;num5;" 형태의 문자열에서 세미콜론(';')를 제외한 num1, num2, num3, num4, num5의 문자열만을 자르고자 할 경우 strtok()함수를 사용하면 쉽게 문자열을 자를 수 있습니다. 아래 예제는 for()문과 while()문을 이용하여 문자열을 자르는 방법을 보여줍니다. 예제(Example)123456789101112131415161718192021222324#..

[C/C++] 동적으로 파일 사이즈(크기) 구하고 메모리 할당 후 파일 읽기(dynamically get the file size, alloca

[C/C++] 동적으로 파일크기 구하고 메모리 할당 후 파일 읽기(dynamically get the file size, allocate memory and read the file : stat, calloc, free functions example) 안녕하세요 JollyTree입니다. 컴퓨터에 저장되어 있는 파일의 크기는 다양합니다. 이런 다양한 크기의 파일을 읽어 메모리에 저장하기 위해서는 파일 크기보다 큰 크기의 버퍼를 할당하면 됩니다. 하지만, 프로그램 입장에서는 이를 예측하기는 어려우므로, stat 함수를 이용하여 읽으려는 파일의 크기를 구한 후 파일 크기에 맞는 크기의 메모리를 동적으로 할당하면 불필요하게 낭비되는 메모리를 최소화 할 수 있게 됩니다. 또한 stat 함수는 파일 크기(tota..

[C/C++] 전체 경로에서 파일명 추출하기(extract only the file name from the entire path : strrc

[C/C++] 전체 경로에서 파일명 추출하기(extract only the file name from the entire path : strrchr, strcpy functions example) 안녕하세요 JollyTree 입니다.코딩하다가 전체경로 문자열에서 파일명을 추출할 필요가 있을 때가 있습니다. 여러 방법 중 오늘은 strchr, strcpy 함수를 이용하여 아래와 같이 전체 경로에서 파일명만을 추출하는 방법을 포스팅합니다. - 전체 경로 "c:\\test\\tistory.com\\codes.txt" 에서 "codes.txt"만 추출 예제(Example)12345678910111213141516171819202122232425262728293031#pragma warning(disable: 4..

[C/C++] 파일 존재 여부 확인 하기(check the existence of file: access function example)

[C/C++] 파일 존재 여부 확인 하기(check the existence of file: access function example) 안녕하세요 JollyTree입니다.윈도우, 리눅스 등 대부분의 환경에서 코딩을 하다보면 파일의 존재 여부를 검사하는 기능이 필요할 때가 있습니다. 여러가지 방법이 있지만, access 함수를 사용하면 쉽게 기능을 구현할 수 있습니다. 또한, 파일 읽기 쓰기의 권한 정보를 확인할 수 있습니다. 참고 : 본 예제 코드는 Visual Studio 2019 환경에서 작성되었습니다. 따라서 기존 POSIX function name 형태의 함수를 사용하기 위해서는 다음과 같이 Compiler Warning(level3)을 Off 해 주거나 access() 대신 _access()을..

[C/C++] 파일 읽고 쓰기(file read/write : open, read, write, close functions example)

[C/C++] 파일 읽고 쓰기(file read/write : open, read, write, close functions example) 안녕하세요 JollyTree(•̀ᴗ•́)و입니다. 이번에는 파일 디스크립터를 이용한 파일 읽고 쓰기에 대한 예제입니다. 파일스트림(FILE 구조체)을 사용하는 fopen, fwrite, fread 등의 함수와 다른 점은 파일스트림 계열의 함수보다는 저수준 함수로 시스템에서 제공하는 버퍼를 사용합니다. 고수준의 프로그래밍을 원하시면 파일스트림 함수군만을 사용해도 괜찮습니다. 예제(Example) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 3..

[C/C++] 파일 읽고 쓰기(file read/write : fopen, fread, fwrite, fclose functions exampl

[C/C++] 파일 읽고 쓰기(file read/write : fopen, fread, fwrite, fclose functions example) 안녕하세요 JollyTree입니다. 컴퓨터에는 .PPTX, .HWP, .EXE .BAT 등 여러가지 파일들이 존재합니다. 이런 파일들은 대부분의 운영체제와 각종 소프트웨어에서 데이터를 저장하기 위해 사용되며 이는 컴퓨터에서 파일이나 자료를 쉽게 사용하고 관리할 수있도록 해주는 파일시스템(File System)이 있기에 가능합니다. C/C++언어에는 파일을 읽고 쓰기 위한 다양한 함수를 제공합니다. 다음은 C언어 표준 라이브러리에 포함되어 있는 fopen, fread, fwrite, fclose 등 파일 스트림을 사용하는 함수의 사용 예제입니다. 예제(Exam..