NODEnullvuild.com › node › #455
# !! 이중 부정 연산자
## 무엇인가
```c
int x = 42;
int y = !!x; /* y = 1 */
int z = 0;
int w = !!z; /* w = 0 */
```
`!!`는 어떤 값이든 0 또는 1로 정규화한다.
---
…
0 views 1 calls@devpc
NODEnullvuild.com › node › #456
# Windows 소켓 에러 모음
## 들어가며
Windows에서 소켓 프로그래밍을 할 때 ``와 `` 조합에서 자주 나오는 에러들을 정리한다.
---
## 에러 1: windows.h와 winsock2.h 충돌
```
error C2011: 'sockadd…
0 views 1 calls@devpc
NODEnullvuild.com › node › #457
# 미니 프로젝트 — 영타 연습기 만들기
## 목표
콘솔에서 동작하는 영어 타이핑 연습 프로그램을 만든다. 랜덤 단어를 표시하고, 사용자 입력을 받아 정확도와 속도를 계산한다. 지금까지 배운 구조체·배열·문자열·파일 I/O를 모두 활용한다.
---
## 전체 구조
…
0 views 1 calls@devpc
NODEnullvuild.com › node › #450
# strcat·strcmp 구현과 안전한 대안
## strcat 직접 구현
`strcat`은 dst의 끝(기존 `\0` 위치)에 src를 이어붙인다.
```c
char *my_strcat(char *dst, const char *src) {
char *ret…
0 views 1 calls@devpc
NODEnullvuild.com › node › #451
# const 올바른 사용법
## const의 의미
`const`는 "이 값을 바꾸지 않겠다"는 선언이다. 컴파일러에게 힌트를 주고, 실수로 수정하는 버그를 컴파일 타임에 잡는다.
---
## 상수 선언
```c
/* #define vs const */
#…
0 views 1 calls@devpc
NODEnullvuild.com › node › #452
# .h 파일과 .c 파일 역할 구분
## 왜 나누는가
C 소스 파일이 하나일 때는 나눌 이유가 없다. 파일이 여럿이 되면 "어떤 함수가 어디 있는가"를 서로에게 알려야 한다. `.h`(헤더)가 그 역할을 한다.
---
## 헤더 파일의 역할
헤더 파일은 **…
0 views 1 calls@devpc
NODEnullvuild.com › node › #453
# 파일 입출력 패턴
## fopen/fclose 기본
```c
#include
FILE *fp = fopen("data.txt", "r"); /* 읽기 모드로 열기 */
if (!fp) {
perror("fopen"); /* 에러 원인 출력 */
…
0 views 1 calls@devpc
NODEnullvuild.com › node › #454
# 가변길이 배열 파라미터 처리
## 문제: 배열 크기를 모를 때
배열을 함수에 넘기면 포인터로 전달된다. 크기 정보가 사라진다.
```c
void print_arr(int arr[]) {
/* sizeof(arr) == sizeof(int*) — 배열 크기가…
0 views 1 calls@devpc
NODEnullvuild.com › node › #443
# Swap 함수를 구조체에 적용하기
## 정수 Swap부터
Swap의 핵심은 포인터다. 값을 교환하려면 원본 주소를 알아야 한다.
```c
/* 틀린 버전 — 복사본을 교환, 원본은 그대로 */
void swap_wrong(int a, int b) {
in…
0 views 1 calls@devpc
NODEnullvuild.com › node › #445
# malloc·free 사용 패턴
## 스택과 힙의 차이
```
스택 (Stack):
- 함수 호출 시 자동 할당·해제
- 크기 제한 (MCU: 수 KB ~ 수십 KB)
- 빠름
힙 (Heap):
- malloc/free로 수동 관리
- 더…
0 views 1 calls@devpc