반응형

Language/C 56

📌 예제 – 회원관리

요구사항회원 구조체 정의이름, 나이, 이메일, 가입 날짜 포함기능 목록파일로부터 회원 목록 로드 (Member.txt)모든 회원 출력회원 추가회원 검색(수정, 삭제)종료 시 파일저장 후 동적 메모리 해제심화 요구동적 메모리로 회원 배열 관리 (추가/삭제에 대응)함수 포인터 배열로 메뉴 처리오류 발생 시 적절한 에러 메시지 출력가입 날짜는 문자열로 입력받아 구조체에 저장💾 Member.txt 예시 파일사용자이름1,25,sayongja1@domain.com,2025-06-19 12:00사용자이름2,30, sayongja2@domain.com,2025-06-20 13:00 직접 풀어보시고 예제 코드를 확인하시면 좋을거같습니다.스크롤을 내리면 제가 직접 작성한 코드가 있습니다.피드백 환영입니다. ..

Language/C 2025.07.09

📌 예제 - 도서 관리 프로그램

도서 구조체 정의도서 ID: int (예: 1001)제목: 동적 할당된 문자열저자: 동적 할당된 문자열출판년도: int가격: double (실수) 기능 구현 목록파일로부터 도서 목록 로드파일명: books.txt파일 포맷:도서ID,제목,저자,출판년도,가격 (콤마로 구분, 한 줄에 한 권)파일이 없으면 빈 리스트로 시작 도서 검색제목 또는 저자로 검색 가능검색 결과가 여러 개면 전부 출력하고 사용자 선택 가능 도서 추가사용자로부터 도서 정보 입력도서 ID 중복 체크 (중복 시 추가 거부)이중 연결 리스트 맨 뒤에 추가 도서 정보 수정검색 후 선택된 도서의 모든 정보 수정 가능 도서 삭제검색 후 선택된 도서 삭제이중 연결 리스트 노드 연결 관계 재조정 전체 도서 목록 출력앞에서 뒤로 출력뒤에서 앞으로 출력 ..

Language/C 2025.07.04

📌 Chapter 19 - 고급 기법

1. 콜백 함수 (Callback Function)콜백 함수(callback function)는 다른 함수의 인자로 전달되어 특정 시점에 호출되는 함수이다.주로 라이브러리 함수나 API가 사용자 정의 동작을 실행할 때 사용된다.함수 포인터를 사용하여 구현하며, 코드의 유연성과 재사용성을 높인다.이벤트 처리, 비교 함수, 정렬 함수(qsort 등)에서 사용된다.예: qsort() 함수는 정렬 기준을 결정하는 비교 함수를 인자로 받는다.⚠️ 함수 포인터를 사용할 때 매개변수 타입과 반환형을 정확히 일치시켜야 한다.✅ typedef를 사용하면 함수 포인터를 가독성 있게 선언할 수 있다.💻 예제 코드#include #include // 비교 함수 (오름차순 정렬 기준)int compare(const void..

Language/C 2025.07.03

📌 Chapter 18 - 정적 라이브러리와 동적 라이브러리 활용

1. 라이브러리란?라이브러리(library)는 자주 사용하는 함수를 하나의 파일로 묶어 재사용할 수 있도록 만든 것이다.프로젝트에 필요한 기능만 따로 묶어놓기 때문에, 코드 재사용성과 빌드 효율성이 크게 향상된다.1) 종류 구분구분확장자연결 시점특징정적 라이브러리.a컴파일 시컴파일 시 소스에 통합됨 (용량 ↑)동적 라이브러리.so실행 시 (런타임)실행 파일과 별개로 존재 (유지 ↑)✳️ 대부분의 C 표준 라이브러리도 .a 또는 .so 형태로 제공된다.2. 정적 라이브러리 만들기 (.a)1) 소스 및 헤더 구성🔧 기존 예제(math_utils)를 기반으로 정적 라이브러리를 만들어보자.// math_utils.h#ifndef MATH_UTILS_H#define MATH_UTILS_H int add(int ..

Language/C 2025.06.26

📌 Chapter 17 - 선행처리기와 다중 소스 파일 - Makefile

6. Makefile을 활용한 자동 컴파일 시스템Makefile은 여러 개의 소스 파일로 구성된 C 프로젝트를 컴파일할 때, 컴파일 과정을 자동화하고 효율적으로 관리하기 위한 설정 파일이다.수많은 소스 파일과 헤더 파일이 있을 때, 어떤 파일이 변경되었는지 검사해서 변경된 부분만 다시 컴파일한다.따라서 전체 프로젝트를 다시 컴파일하지 않아도 되어, 시간을 크게 절약할 수 있다.make라는 명령어를 사용해 Makefile의 규칙을 따라 작업한다.대규모 프로젝트에서 필수적으로 사용하는 도구이며, 유지보수와 협업에 매우 유리하다.프로젝트 소스가 많아지면, 모든 소스 파일을 매번 컴파일하는 것은 매우 비효율적이다.Makefile은 파일의 최종 수정 시간을 비교하여, 변경된 파일과 그 의존성만 컴파일한다.이를 통..

Language/C 2025.06.24

📌 Chapter 17 - 선행처리기와 다중 소스 파일 - 헤더 파일 분리와 다중 소스 파일 관리

5. 헤더 파일 분리와 다중 소스 파일 관리1) 다중 소스 파일다중 소스 파일은 하나의 C 프로젝트에서 여러 개의 .c 파일을 나누어 관리하는 방식이다.이때 각 .c 파일은 하나의 모듈(module)로 취급한다.각 모듈은 역할 단위로 코드가 분리되어, 유지 보수와 재사용성이 향상된다.✅ 다중 소스 파일 구조는 실제 개발 현장에서 표준적인 관리 방식이다.2) 헤더 파일 분리의 기본 원칙각 소스 파일(.c)에 대한 함수 선언(원형)은 별도의 헤더 파일(.h)에 작성한다.이 헤더 파일은 해당 기능을 사용하는 다른 소스 파일에서 #include 하여 연결된다.⭕ 예를 들어:파일명역할math_utils.c실제 계산 기능 구현math_utils.hmath_utils.c의 함수 원형 정의main.c프로그램 실행 시작..

Language/C 2025.06.24

📌 Chapter 17 - 선행처리기와 다중 소스 파일 - Include Guard

4. Include Guard (헤더 중복 포함 방지)C 언어에서는 #include를 통해 헤더 파일을 여러 번 포함할 수 있다.하지만 같은 헤더 파일이 여러 번 포함되면 중복 정의 오류가 발생할 수 있다.이 문제는 매크로와 조건부 컴파일을 조합하여 해결할 수 있다.✳️ 이를 위해 사용하는 기법이 바로 Include Guard(인클루드 가드)이다.1) Include Guard의 구조#ifndef HEADER_NAME // ① 이 매크로가 정의되어 있지 않으면#define HEADER_NAME // ② 정의한다 // 실제 헤더 내용 작성 #endif // ③ 조건부 컴파일 종료· 이 구조는 헤더 파일이 한 번만 컴파일되도록 보장한다.· HEADER_NAME은 대문자 ..

Language/C 2025.06.24

📌 Chapter 17 - 선행처리기와 다중 소스 파일 - 조건부 컴파일

3. 조건부 컴파일(Conditional Compilation)조건부 컴파일이란, 코드 일부를 특정 조건에 따라 선택적으로 컴파일하는 기능이다.이는 C 언어의 선행처리기(Preprocessor) 지시문을 활용하여 구현한다.프로그램 실행 중이 아니라, 컴파일 이전 단계에서 조건을 평가하고 해당 코드의 포함 여부를 결정한다.✳️ 주로 운영체제별 코드 분기, 디버깅 구문 삽입, 기능 켜기/끄기 옵션 처리 등에 사용한다.1) #ifdef ~ #endif#ifdef 매크로명 // 매크로가 정의되어 있을 때 컴파일되는 영역#else // 정의되어 있지 않을 때 컴파일되는 영역#endif· #ifdef는 매크로가 정의되어 있으면 참으로 판단한다.· #else는 선택 사항이며, 조건이 거짓일 때 실행할 코드..

Language/C 2025.06.24

📌 Chapter 17 - 선행처리기와 다중 소스 파일 - 매크로

2. 매크로(Macro)매크로는 키보드 입력이나 코드 문장을 간단한 이름 하나로 자동 반복 실행할 수 있는 기능이다.C 언어에서 매크로는 #define 지시문을 사용하여 정의하며, 컴파일 전 치환 처리를 한다.일종의 문자열 치환 도구로, 상수나 함수처럼 보이는 이름을 실제 코드로 바꾸는 역할을 한다.✳️ 키보드 매크로와 개념이 비슷하지만, C 언어 매크로는 소스 코드 수준에서 동작한다는 점이 다르다.1) #define 지시문#define은 상수나 반복적인 표현을 심볼(symbol)로 정의하여 코드의 가독성과 유지보수성을 높인다.정의 방식에 따라 상수 매크로와 함수형 매크로로 구분한다.⭕ 기본 문법#define 매크로명 치환문자열#define 매크로명(매개변수) 치환문자열· 상수 정의: 반복 사용되는 값에..

Language/C 2025.06.24

📌 Chapter 17 - 선행처리기와 다중 소스 파일 - 선행처리기

1. 선행처리기 (Preprocessor)선행처리기는 사용자가 작성한 C 소스 코드를 기계어로 번역하기 전에 먼저 수행되는 일련의 처리 과정이다.주된 역할은 코드의 간소화, 재사용성 향상, 이식성 개선 등이다.이식성이란 코드가 다른 시스템이나 환경에서 얼마나 쉽게 작동할 수 있는지를 의미한다.선행처리기는 이식성을 높이기 위한 도구로 사용된다.⚠️ 선행처리기는 텍스트를 텍스트로 변환하는 반면, 컴파일러는 텍스트를 기계어로 변환한다.1) 전처리 과정의 순서⭕ 전처리와 컴파일 전체 흐름은 다음과 같다:1️⃣ 소스 프로그램 ⏩ 선행처리기2️⃣ 선행처리된 소스 프로그램 ⏩ 컴파일러3️⃣ 목적 파일(.obj 등) ⏩ 링커4️⃣ 실행 파일(.exe 등)2) 전처리 지시자의 특징# 기호로 시작한다.끝에 ;(세미콜론)를..

Language/C 2025.06.24
반응형