이 튜토리얼에서는 C/C++ 프로그램을 사용하여 디렉토리(폴더)를 생성하는 방법을 알아보겠습니다.새로운 디렉토리를 만들 때는 mkdir() 함수를 사용합니다. 이 함수는 <dir.h> 헤더 파일에 정의되어 있으며, 인자로 전달된 이름의 디렉토리를 생성합니다. 디렉토리 생성에 성공하면 0을 반환하고, 실패하면 -1을 반환하므로 반환값을 확인하여 성공 여부를 판단할 수 있습니다.단, 아래 예제 코드는 Windows 계열 컴파일러(Turbo C 등)에서만 동작합니다. Linux나 macOS 환경에서는 <sys/stat.h
이 튜토리얼에서는 Clang 도구를 활용하여 C/C++ 코드 포맷팅(서식 정리) 도구를 직접 만드는 방법을 소개합니다. 몇 줄의 파이썬 스크립트와 clang-format만 있으면 프로젝트 전체의 코드 스타일을 손쉽게 일관성 있게 유지할 수 있습니다.1. 환경 설정먼저 필요한 패키지를 설치합니다. 파이썬과 clang-format을 설치하면 됩니다.sudo apt install pythonsudo apt install clang-format-3.5설치가 완료되면 현재 사용자가 읽기 및 쓰기 권한을 가진 위치에 파이썬 파일을 하나 생성합
코루틴이란?이 글에서는 C/C++에서 코루틴(Coroutine)이 무엇인지, 그리고 이를 실제 코드로 어떻게 구현하는지 알아보겠습니다.코루틴은 두 개의 루틴(함수) 사이에서 실행 제어권을 서로 주고받으면서 번갈아 수행되는 제어 구조입니다. 일반적인 함수 호출과 달리, 코루틴은 호출된 함수가 완전히 종료되지 않은 상태에서 제어권을 넘기고, 나중에 중단된 지점부터 다시 실행을 재개할 수 있다는 점이 특징입니다.예제 코드다음 예제는 C 언어에서 static 변수와 switch 문을 활용하여 코루틴의 동작을 흉내 낸 코드입니다.#inclu
문제 개요문자열 s가 주어졌을 때, 다섯 개의 모음인 a, e, i, o, u가 모두 짝수 번씩 등장하는 가장 긴 부분 문자열(substring)의 길이를 구해야 합니다. 예를 들어 문자열이 "helloworld"라면, 조건을 만족하는 가장 긴 부분 문자열의 길이는 8입니다.풀이 접근 방식이 문제의 핵심 아이디어는 모음별 홀짝 상태를 하나의 키로 압축하는 것입니다. 문자열을 왼쪽부터 순회하면서 각 시점마다 지금까지 등장한 모음의 개수를 세고, 각 모음이 홀수 번인지 짝수 번인지를 5자리 상태 문자열(예: "
INT_MAX와 INT_MIN이란 무엇인가?C/C++ 프로그래밍에서 INT_MAX와 INT_MIN은 int 자료형이 표현할 수 있는 최댓값과 최솟값을 미리 정의해 둔 매크로입니다. 이 매크로들은 <climits>(C++의 경우) 또는 <limits.h>(C의 경우) 헤더 파일에 정의되어 있으며, 32비트 시스템 기준으로 다음과 같은 값을 가집니다.INT_MAX: 2147483647 (2³¹ − 1)INT_MIN: -2147483648 (−2³¹)변수나 배열 요소의 초기화, 값의 범위 비교 등 다양한 상황에서 유
이 튜토리얼에서는 C/C++에서 사용되는 정수 리터럴(Integer Literal)의 개념과 함께 접두사(Prefix)와 접미사(Suffix)가 어떻게 활용되는지 자세히 알아보겠습니다.정수 리터럴이란?정수 리터럴이란 소스 코드에 직접 작성되는 정수 값을 의미합니다. 예를 들어 213, 0x213A처럼 코드 안에서 그 자체로 값을 나타내는 숫자들이 모두 정수 리터럴입니다.정수 리터럴은 크게 두 가지 요소로 구성됩니다.접두사(Prefix) – 값의 진법(기수)을 나타냅니다. 예를 들어 0x10은 0x라는 접두사를 통해 16진수 값임을
개요 이 튜토리얼에서는 C와 C++ 프로그래밍 언어에서 루프(반복문)가 무엇인지, 그리고 어떻게 활용되는지 예제 프로그램을 통해 살펴보겠습니다. 프로그래밍에서 루프는 특정 코드 블록을 여러 번 반복해서 실행해야 할 때 사용됩니다. 만약 루프가 없다면 동일한 코드를 수십 번, 수백 번 반복해서 작성해야 할 것입니다. 루프를 활용하면 이러한 중복을 없애고, 유지보수가 쉬운 DRY(Dont Repeat Yourself) 원칙에 부합하는 깔끔한 코드를 작성할 수 있습니다. for 루프 for 루프는 반복 횟수가 명확하게 정해져 있을 때
개요 이 튜토리얼에서는 C/C++의 lseek() 함수를 활용해 파일에서 일정 간격으로 떨어진 바이트(교차하는 n번째 바이트)를 읽어 다른 파일에 기록하는 방법을 알아봅니다. 두 개의 .txt 파일이 주어지며, 우리의 목표는 파일 디스크립터의 읽기·쓰기 위치(포인터)를 이동시키는 데 사용되는 lseek() 함수를 통해 한 파일의 내용 중 특정 간격의 바이트만 골라내 다른 파일에 쓰는 것입니다. lseek() 함수란? lseek()는 열려 있는 파일 디스크립터의 오프셋, 즉 현재 읽기·쓰기 위치를 원하는 지점으로 이동시키는 시스템 콜
C/C++ 프로그래밍에서 memcpy() 함수는 한 메모리 공간에서 다른 메모리 공간으로 데이터를 빠르게 복사할 때 사용하는 대표적인 표준 라이브러리 함수입니다. 이 글에서는 memcpy() 함수의 동작 원리, 문법, 매개변수, 반환값은 물론 실제 코드 예제와 주의 사항까지 자세히 알아보겠습니다.memcpy() 함수란?memcpy()는 C++ STL의 <cstring> 헤더 파일(C 언어에서는 <string.h>)에 정의된 내장 함수로, 특정 메모리 위치에서 다른 메모리 위치로 지정한 크기만큼의 데이터를 복사하
이 글에서는 C++ STL의 std::mbsrtowcs() 함수의 동작 원리, 문법, 그리고 실제 사용 예제를 자세히 살펴보겠습니다.std::mbsrtowcs()란 무엇인가?std::mbsrtowcs()는 C++ STL에 내장된 함수로, <cwchar> 헤더 파일에 정의되어 있습니다. 함수 이름에서 알 수 있듯이, mbsrtowcs(multibyte string restartable to wide character string)는 *src가 가리키는 널(null)로 종료되는 멀티바이트 문자열을 와이드(wide) 문자 표현
이 글에서는 C++ STL에서 제공하는 std::mbrtoc16() 함수의 동작 원리, 문법 그리고 실제 사용 예제를 자세히 살펴보겠습니다. std::mbrtoc16()란 무엇인가? std::mbrtoc16()은 C++ STL에 내장된 함수로, <cuchar> 헤더 파일에 정의되어 있습니다. 이 함수는 좁은(narrow) 멀티바이트 문자를 UTF-16 문자 표현으로 변환하는 데 사용됩니다. 연관된 문자 포인터가 NULL이 아니고 나머지 매개변수들도 올바르게 전달되면, 해당 문자에 대응하는 16비트 문자로 변환을 수행합니
이 글에서는 C++ STL의 std::mbrtoc32() 함수가 어떻게 동작하는지, 그 문법과 실제 사용 예제를 자세히 살펴보겠습니다. std::mbrtoc32()란 무엇인가? std::mbrtoc32()는 C++ 표준 라이브러리에 내장된 함수로, <cuchar> 헤더 파일에 정의되어 있습니다. 이 함수는 좁은(narrow) 멀티바이트 문자를 UTF-32 문자 표현으로 변환하는 데 사용됩니다. 연관된 문자 포인터가 null이 아니고 나머지 매개변수들도 모두 유효하다면, 해당 문자를 32비트 문자로 변환합니다. 문법 siz
이 글에서는 C++ STL의 putwchar() 함수가 어떻게 동작하는지, 그리고 그 문법과 실제 활용 예제까지 자세히 살펴보겠습니다.putwchar() 함수란?putwchar()는 C++ STL에 내장된 함수로, <cwchar> 헤더 파일에 정의되어 있습니다. 이 함수는 표준 출력 장치(stdout)에 와이드 문자(wide character) 하나를 출력하는 역할을 합니다. 인수로 전달된 와이드 문자를 받아 시스템의 표준 출력 스트림에 기록합니다.쉽게 말해, putwchar()는 <cstdio> 헤더 파일에
C++ 프로그래밍에서 문자 인코딩을 다루다 보면 멀티바이트(multibyte) 문자와 와이드(wide) 문자 사이의 변환이 필요한 순간이 자주 찾아옵니다. 이 글에서는 C++ STL에서 제공하는 std::mbrtowc() 함수의 동작 원리, 문법, 매개변수, 반환 값 그리고 실전 예제까지 체계적으로 살펴보겠습니다. std::mbrtowc()란 무엇인가? std::mbrtowc()는 C++ 표준 라이브러리에 내장된 함수로, <cwchar> 헤더 파일에 정의되어 있습니다. 함수 이름은 multi-byte re-starta
운영체제(OS)에 독립적인 코드란, 프로그램이 실행되는 환경이 Windows든 Linux든 macOS든 상관없이 운영체제와 정상적으로 상호작용할 수 있는 프로그램을 의미합니다.C/C++의 대부분의 컴파일러는 실행 환경의 운영체제를 감지할 수 있는 전처리기 매크로(predefined macros)를 제공합니다. 이 매크로들을 활용하면 컴파일 시점에 OS를 판별하고, 각 환경에 맞는 코드를 선택적으로 컴파일할 수 있습니다.OS 감지에 사용되는 주요 매크로GCC 컴파일러에서 자주 사용되는 대표적인 매크로는 다음과 같습니다._WIN32 :
경쟁 프로그래밍에서 가장 중요한 것은 효율적인 코드 작성입니다. 최적화되고 빠른 코드는 프로그래머의 순위를 좌우할 수 있는 결정적인 차이를 만들어냅니다.이번 글에서는 경쟁 프로그래밍에서 효율적인 C/C++ 코드를 작성하는 데 도움이 되는 핵심 개념과 실전 팁을 소개합니다.기본 용어 정리템플릿(Template) : 특정 자료형에 의존하지 않고 작성하는 코드입니다.매크로(Macro) : 이름이 지정된 코드 조각으로, 반복되는 코드를 간결하게 줄여줍니다.벡터(Vector) : 요소의 삽입과 삭제에 따라 크기가 자동으로 조절되는 동적 배열
C와 C++는 문법이 매우 유사해 보이지만, 두 언어 사이에는 미묘하면서도 중요한 차이점들이 존재합니다. 그래서 동일한 소스 코드라도 C 컴파일러와 C++ 컴파일러 각각으로 컴파일하고 실행하면 서로 다른 결과가 출력되는 프로그램을 만들 수 있습니다.아래에서 대표적인 두 가지 사례를 예제 코드와 함께 살펴보겠습니다.1. 문자 리터럴(Character Literal)의 처리 차이C와 C++는 문자 리터럴을 서로 다르게 취급합니다. C에서는 문자 리터럴이 정수형(int) 상수로 해석되지만, C++에서는 char 타입으로 해석됩니다. 따라
이 글에서는 C++ STL에서 제공하는 rand()와 srand() 함수의 동작 원리, 문법, 그리고 실제 사용 예제를 자세히 살펴보겠습니다. rand()란 무엇인가? rand() 함수는 C++ STL에 내장된 함수로, <cstdlib> 헤더 파일에 정의되어 있습니다. rand()는 일련의 난수(random number)를 생성하는 데 사용되며, 코드에서 임의의 숫자가 필요할 때 활용됩니다. 예를 들어, C++로 보드게임을 만들 때 1부터 6 사이의 임의의 숫자를 생성해야 한다면 rand() 함수를 사용하면 됩니다. 난수
함수는 마치 하나의 기계와 같습니다. 기계가 입력을 받아 처리한 후 결과물을 출력하듯, 함수도 값을 받아 연산을 수행하고 그 결과를 반환합니다. 사람이 기계에 직접 입력값을 넣어야 기계가 작동하는 것처럼, 프로그래머가 함수를 호출해야 비로소 함수가 실행됩니다.함수는 프로그래밍 언어마다 부르는 이름은 조금씩 다를 수 있지만, 다음과 같은 두 가지 공통적인 특징을 가집니다.처리해야 할 명령문들의 나열(sequence)을 포함합니다.그 명령문들은 하나의 이름으로 식별되며, 이 이름이 곧 해당 함수를 가리킵니다.함수를 사용하는 이유재사용성
이 글에서는 길이가 n인 이진 문자열(binary string) 중에서 연속된 1이 한 번도 등장하지 않는 문자열의 총 개수를 구하는 방법을 알아봅니다.이진 문자열이란?2진법(Binary Number System)은 여러 숫자 표현 방식 중 하나로, 디지털 시스템에서 가장 널리 사용되는 체계입니다. 2진법은 오직 두 가지 동작 상태 또는 조건만 가질 수 있는 장치로 표현되는 값을 나타내는 데 활용됩니다. 대표적인 예로 스위치를 들 수 있는데, 스위치는 열림과 닫힘이라는 두 가지 상태만 가집니다.2진법에는 0과 1이라는 단 두 개의