C 표준 라이브러리 출력 함수 사용 가이드

서言 C 언어에서 제공되는 표준 출력 함수들은 데이터의 형식화된 출력을 담당한다. 이 함수들을 잘못 사용하면 버퍼 오버플로우나 보안 취약점이 발생할 수 있으므로, 각 함수의 특성과 사용 시 주의사항을 명확히 이해하는 것이 중요하다. 1. 포맷 출력 함수의 종류 C 표준 라이브러리에서 제공하는 주요 형식 출력 함수들은 다음과 같다: #include <stdio.h> i ...

7월 24일 10:55에 게시됨

C 언어에서 변수 교환 방법 3가지

프로그래밍을 하다 보면 두 변수의 값을 서로 교환해야 하는 상황이 빈번하게 발생한다. 가장 일반적인 방법은 임시 변수를 사용하는 것이지만, 면접이나 코딩 테스트에서 임시 변수 없이 값을 교환하는 방법을 물어보는 경우도 많다. 본 글에서는 C 언어를 기준으로 변수 교환의 세 가지 방법을 살펴보도록 한다. 1. 임시 변수 방식 (Three-Variable Method) 가장 기본 ...

7월 23일 11:44에 게시됨

C/C++ 표준 라이브러리: `strtok` 함수를 이용한 문자열 토큰 분리

개요 C 및 C++ 표준 라이브러리에서 제공하는 strtok 함수는 널(null)로 끝나는 문자열을 지정된 구분자(delimiter)를 기준으로 여러 개의 '토큰(token)'으로 분리하는 데 사용됩니다. 이 함수는 주로 C 스타일 문자열(`char*`)을 다룰 때 유용하며, <cstring> (C++에서는 <string.h>) 헤더 파일에 정의되어 있습니다. 함수 시그니처 char* strtok( char* str ...

7월 23일 03:06에 게시됨

C언어: 전역 변수, 정적 지역 변수, 매크로 정의

변수는 일반적으로 함수 내부에 선언되어 함수 실행 중에만 존재하고 종료 후 소멸되는 지역 변수가 대부분입니다. 전역 변수 함수 외부에 선언된 변수를 전역 변수라고 합니다. 전역 변수는 프로그램 전체에서 유효하며, 모든 함수에서 접근하고 사용할 수 있습니다. 초기화되지 않은 전역 변수는 컴파일러에 의해 자동으로 0으로 초기화됩니다. (지역 변수 ...

7월 21일 03:32에 게시됨

C 언어에서 배열과 함수의 활용: 실습 가이드

1. 배열 메모리 구조 이해 다음 코드는 1차원 및 2차원 정수 배열의 메모리 할당 방식을 분석합니다. #include <stdio.h> #define N 4 #define M 2 void test1() { int arr[N] = {1, 9, 8, 4}; int i; printf("sizeof(arr) = %d\n", sizeof(arr)); for (i = 0; i < N; ++i) printf("%p: %d\n", &arr[i], arr[i]); pri ...

7월 20일 19:14에 게시됨

C/C++에서 main 함수의 반환 타입 오류 해결: '::main'은 int를 반환해야 합니다

VSCode에서 C 또는 C++ 프로그램을 실행할 때 다음과 같은 오류가 발생할 수 있습니다: error: '::main' must return 'int' void main() 이 문제는 주로 void main() 형태로 main 함수를 선언했을 때 발생하며, 특히 C++ 환경이나 최신 컴파일러를 사용하는 경우 자주 나타납니다. 아래 코드 예제를 살펴보겠습니다. #include <stdio.h> void main() { ...

7월 20일 05:39에 게시됨

C 언어 포인터와 문자열 실습 문제 해설

1. 배열에서 최소값과 최대값 찾기 find_min_max 함수는 입력된 숫자들 중에서 최소값과 최대값을 탐색하는 역할을 수행합니다. pmin은 최소값이 저장된 메모리 주소를 가리키고, pmax는 최대값이 저장된 메모리 주소를 가리킵니다. 2. 최대값 탐색 및 주소 반환 아래 코드는 배열에서 최대값을 찾아 해당 원소의 주소를 반환하는 예제입니다. #include <stdio.h> # ...

7월 15일 16:16에 게시됨

Buuctf - findKey

Reverse Engineering을 통해 키를 찾는 방법 LRESULT __stdcallWndProc(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam) { // 각종 변수와 버퍼 선언 HDC hdc; struct tagPAINTSTRUCT Paint; CHAR Buffer[100]; struct tagRECT Rect; // 문자열 로드 LoadStringA(hInstance, 0x6Au, Buffer, 100); if (Msg > 273) { if (Msg == 517) { ...

7월 15일 03:36에 게시됨

C 프로그래밍 실습 - 구조체와 포인터 활용

실습 개요 본 실습에서는 C语言的 구조체, 포인터, 연결 리스트 등 핵심 개념을 실습을 통해 학습한다. 각 과제별로 다양한 데이터 구조를 활용하는 방법을 익힌다. 과제 1: 학생 성적 관리 시스템 학생 정보를 구조체로 정의하고, 성적 계산 및 정렬 기능을 구현한다. #include #include #define MAX_STUDENTS 3 typedef struct { int student_id; char nam ...

7월 13일 04:24에 게시됨

포인터와 배열을 활용한 C언어 프로그래밍 예제

다음은 C언어에서 포인터와 배열을 사용하는 다양한 예제들입니다. 2차원 배열과 포인터를 이용한 요소 접근 및 출력 #include <stdio.h> int main() { int arr[3][4] = {0}; int (*ptr)[4] = arr; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 4; ++j) { arr[i][j] = i * 4 + j + 1; printf("%d ...

7월 11일 03:04에 게시됨