c-50

[C언어 50강] 50강. 캡스톤: 텍스트 게임 또는 데이터 처리 도구 + 코드리뷰/리팩터링 체크리스트

C언어 50강의 마지막은 새 문법을 더 배우는 시간이 아니라, 지금까지 배운 문법을 제품처럼 조립하는 시간입니다. 오늘 주제는 텍스트 게임(예: 간단한 던전/퀴즈 게임) 또는 데이터 처리 도구(예: CSV 통계 계산기) 같은 캡스톤을 설계·구현하는 방법입니다. 핵심은 기능을 많이 넣는 것이 아니라, 작동 가능한 최소 버…

[C언어 50강] 49강. 미니 프로젝트 2: 관리 프로그램(주소록/학생관리) + 파일 저장

C언어 프로젝트를 하다 보면 문법보다 먼저 부딪히는 문제가 있습니다. 바로 "프로그램이 끝나도 데이터가 남아 있어야 한다"는 요구입니다. 오늘 강의에서는 주소록/학생관리 같은 관리 프로그램을 예로 들어, 메모리 안의 구조체 배열을 파일에 저장하고 다시 읽어오는 흐름을 개념 중심으로 정리합니다. 핵심은 함수 몇 개를 외우…

[C언어 50강] 48강. 미니 프로젝트 1: 메뉴형 콘솔 프로그램(계산기/유틸)

C언어 50강의 48강입니다. 이번 강의부터는 문법 단원을 넘어, 지금까지 배운 요소를 하나의 실행 가능한 프로그램으로 엮는 연습을 합니다. 주제는 메뉴형 콘솔 프로그램입니다. 계산기나 간단한 유틸리티처럼, 사용자가 메뉴를 선택하고 기능을 실행한 뒤 다시 메뉴로 돌아오는 구조를 설계해 봅니다.

[C언어 50강] 47강. 입력/실행 심화: EOF 처리, 버퍼링, argc/argv(인자 처리)

프로그램이 "돌아간다"와 "현장에서 버틴다"의 차이는 입력과 실행 경계를 어떻게 다루느냐에서 갈립니다. 이번 강의는 EOF(End Of File), 표준 입출력 버퍼링, argc/argv 인자 처리를 하나의 흐름으로 묶어 이해합니다. 핵심은 문법이 아니라 프로그램이 데이터를 받는 입구를 설계하는 관점입니다.

[C언어 50강] 46강. 표준 라이브러리 활용: stdlib/ctype/time/stdint 등 실전 사용

C언어에서 표준 라이브러리는 "편의 기능 모음"이 아니라, 운영체제/컴파일러 차이를 흡수하면서 재사용 가능한 프로그램을 만들기 위한 공통 계약입니다. 이번 강의는 stdlib.h, ctype.h, time.h, stdint.h를 중심으로, 함수를 외우는 대신 왜 이 헤더들이 실무에서 반복적으로 등장하는지 개념부터 정리합…

[C언어 50강] 45강. 함수 포인터/콜백: qsort 비교함수, 전략 패턴 맛보기

C언어에서 함수 포인터는 "어려운 문법"이 아니라, 코드를 데이터처럼 다루기 위한 핵심 도구입니다. 특히 콜백(callback)과 함께 쓰면 "무엇을 할지"를 실행 중에 바꿀 수 있어서, 정렬 기준 변경·이벤트 처리·전략 교체 같은 요구를 깔끔하게 해결할 수 있습니다. 이번 강의에서는 문법 암기보다 "왜 함수 주소를 전…

[C언어 50강] 44강. 비트 연산 &, |, ^, ~, 쉬프트, 플래그 설계

C언어에서 비트 연산은 "저수준 트릭"이 아니라, 데이터를 가장 작은 단위(비트)로 정확하게 다루는 기본 기술입니다. 임베디드, 네트워크 프로토콜, 권한 플래그, 성능 최적화, 바이너리 파일 파싱까지 모두 비트 단위 사고가 필요합니다. 이번 강의에서는 연산자 기호를 외우는 데서 멈추지 않고, 값이 메모리에서 어떤 비트…

[C언어 50강] 43강. 분할 컴파일: 여러 .c/.h 빌드 흐름, Makefile 기초

규모가 작은 실습에서는 main.c 하나만 컴파일해도 충분합니다. 하지만 기능이 늘어나면 한 파일에 모든 코드를 몰아넣는 방식은 곧 유지보수 한계에 부딪힙니다. 이번 강의에서는 C 프로젝트를 여러 .c/.h 파일로 나누는 분할 컴파일(separate compilation) 개념과, 그 빌드 과정을 자동화하는 Makefi…

[C언어 50강] 42강. 전처리기: #define 매크로, 조건부 컴파일, 매크로 주의점

C를 처음 배울 때는 전처리기를 단순히 "컴파일 전에 텍스트를 치환해주는 도구" 정도로 이해하고 넘어가곤 합니다. 그런데 실무에서는 전처리기가 코드 품질과 유지보수성에 큰 영향을 줍니다. 잘 쓰면 반복을 줄이고 플랫폼 차이를 깔끔하게 흡수하지만, 잘못 쓰면 디버깅이 어려운 코드를 양산합니다. 이번 강의에서는 #defin…

[C언어 50강] 41강. 에러 처리: 반환값 규칙, errno/perror, 실패 설계

C 프로그램이 실무에서 오래 버티는지, 배포 후 장애를 줄이는지는 정상 동작 코드보다 실패를 다루는 코드에서 갈립니다. 많은 초급 예제는 성공 경로(happy path)만 보여주지만, 실제 운영 환경에서는 파일 권한 문제, 잘못된 입력, 메모리 부족, 네트워크 지연처럼 실패가 더 자주 나타납니다. 이번 강의에서는 에러…