목차
Chapter 1 시작하면서
C란 무엇인가 = 1
왜 C인가 = 2
설계측면 = 2
효율성 = 3
이식성 = 3
집에서 쓰는 C = 3
강력함과 유연성 = 4
프로그래머 지향적 = 4
단점 = 4
C의 역사 = 5
C 활용 7단계 = 6
1단계 : 프로그램의 목표 정의 = 6
2단계 : 프로그램 설계 = 7
3단계 : 코드 작성 = 8
4단계 : 컴파일 = 9
5단계 : 프로그램 실행 = 9
6단계 : 프로그램 테스트 및 디버깅 = 10
7단계 : 프로그램 관리 및 수정 = 10
남은 과제 = 11
프로그래밍의 역학 관계 = 11
소스 코드 파일 = 12
오브젝트 코드 파일, 실행 파일, 라이브러리 = 13
UNIX 시스템 = 14
Linux 시스템 = 17
IBM PC의 커맨드 라인 컴파일러 = 17
DOS용 통합 개발 환경(IDE : Integrated Development Environment) = 19
Windows용 통합 개발 환경(IDE : Integrated Development Environment) = 19
매킨토시와 C = 21
컴파일 작업이 왜 필요한가? = 22
표준 언어 = 22
ANSI C 표준 = 23
C9X위원회 = 24
몇 가지 규약들 = 25
글자체 = 25
화면 출력 = 26
이 장의 요약 = 27
복습문제 = 27
프로그래밍 연습 = 28
Chapter 2 C와의 만남
간단한 C 예제 프로그램 = 29
설명 = 30
1단계 : 대충 보기 = 31
2단계 : 상세 보기 = 33
간단한 프로그램의 구조 = 42
프로그램을 읽기 쉽게 하는 몇 가지 요령 = 43
다음 단계 = 44
문서화 = 45
다중 선언 = 45
곱하기 = 45
다중값의 출력 = 45
다중 함수 = 46
디버깅 = 48
구문 오류 = 49
논리 오류 = 50
프로그램 상태 = 52
키워드 = 53
이 장의 요약 = 54
복습문제 = 54
프로그래밍 연습 = 56
Chapter 3 C와 데이터
또 다른 예제 프로그램 = 59
새롭게 등장한 것 = 61
데이터 : 변수와 상수 = 62
정수형과 실수형 = 64
정수 = 65
실수 = 65
데이터형 = 66
int 형 = 67
그 밖의 다른 정수형 = 71
문자 : char 형 = 77
float 형 및 double 형 = 85
그 밖의 다른 형 = 88
각 형의 크기 = 92
데이터형의 사용 = 94
전달인수와 함정 = 95
또 다른 예제 = 97
어떤 일이 일어나는가 = 98
문제 발생 가능성 = 99
이 장의 요약 = 100
복습문제 = 101
프로그래밍 연습 = 104
Chapter 4 문자열과 입·출력 형식
소개 프로그램 = 105
문자열 : 소개 = 107
char형 배열과 널 문자 = 107
문자열 사용 = 108
strlen() 함수 = 110
상수와 C 선행처리기 = 112
const 변경자 = 116
#define과 #include = 117
변장의 대가, C : 알리아스(별명) 만들기 = 117
작업에 필요한 상수 정의 = 119
Printf()와 scanf() 함수 완전 정복 = 121
printf() 함수 = 121
printf() 사용법 = 122
printf() 변환 형식 = 125
변환의 의미 = 131
scanf() 사용법 = 139
printf()와 scanf()에서의 * 변경자 = 145
유용한 활용법 = 147
이 장의 요약 = 148
복습문제 = 149
프로그래밍 연습 = 151
Chapter 5 연산자, 수식, 문
루프 소개 = 153
기본 연산자 = 156
대입 연산자 : = = 157
덧셈 연산자 : + = 159
뺄셈 연산자 : - = 159
부호 연산자 : -와 + = 160
곱셈 연산자 * = 161
나눗셈 연산자 : / = 163
연산자 우선 순위 = 165
우선 순위와 처리 순서 = 167
그 밖의 연산자들 = 169
sizeof 연산자 = 169
모듈로 연산자 : % = 170
증가 연산자 : ++ = 171
감소 연산자 : -- = 175
우선 순위 = 176
영리한 척하지 마리 = 177
수식과 문 = 179
수식 = 179
문 = 180
복합문(블록) = 184
형 변환 = 186
캐스트 연산자 = 188
전달인수를 갖는 함수 = 190
K&R 함수 정의 = 192
예제 프로그램 = 194
이 장의 요약 = 196
복습문제 = 197
프로그래밍 연습 = 201
Chapter 6 C 제어문 : 루프
시작 예제 = 204
프로그램 설명 = 205
C 스타일의 읽기 루프 = 207
while 문 = 207
while 루프 종료 = 208
루프는 언제 끝나는가? = 209
while : 시작 조건 루프 = 210
구문상의 유의점 = 210
어느 것이 더 큰가 : 관계 연산자와 수식 = 212
참이란? = 214
어떤 것이 참인가? = 215
참에 대한 난점 = 217
관계 연산자의 우선 순위 = 219
부정형 루프와 카운트 루프 = 222
for 루프 = 223
유연성 있는 for 루프 = 225
다양한 대입 연산자 : +=, -=, *=, /=, %= = 231
콤마 연산자 = 232
for 루프와 제노의 만남 = 235
탈출 조건 루프 : do while = 237
어떤 루프를 사용할 것인가 = 240
중첩된 루프 = 242
기본 구성 = 243
변형된 중첩 루프 = 243
배열 = 244
배열과 for 루프의 사용 = 246
함수의 리턴값을 이용한 루프 예제 = 248
프로그램 논의 = 251
리턴값을 갖는 함수의 사용 = 252
이 장의 요약 = 253
복습문제 = 254
프로그래밍 연습 = 260
Chapter 7 C 제어문 : 분기와 점프
if 문 = 263
if 기초 = 265
if-else 문 = 266
또 다른 예제 : getchar() 함수와 putchar() 함수의 소개 = 268
ctype.h 계열의 문자 함수 = 271
다중 선택 : else if = 273
else와 if의 짝짓기 = 277
더 중첩된 if = 279
논리적인 사고 = 284
우선 순위 = 286
평가 순서 = 286
범위 = 288
단어 계수 프로그램 = 289
조건 연산자 : ? = 292
루프의 보조 수단 : continue와 break = 296
continue 문 = 296
break 문 = 300
다중 선택 : switch와 break = 302
switch 문의 사용 = 304
한 라인의 첫 문자만 읽어들이는 방법 = 306
다중 레이블 = 307
switch와 if else = 310
goto 문 = 310
goto를 피하는 방법 = 311
이 장의 요약 = 316
복습문제 = 317
프로그래밍 연습 = 321
Chapter 8 문자 입·출력과 리디렉션
문자 단위 입·출력 : getchar()와 putchar() = 326
버퍼 = 327
키보드 입력의 종료 = 329
파일, 스트림, 키보드 입력 = 329
파일의 끝(EOF) = 331
리디렉션(redirection)과 파일 = 334
UNIX와 DOS의 리디렉션 = 335
그래픽 예제 = 341
더 친근한 사용자 인터페이스 만들기 = 343
버퍼링 입력 = 343
숫자와 문자 입력의 혼용 = 346
문자 스케치 = 350
프로그램의 분석 = 354
메뉴 검색 = 357
작업 = 357
자연스런 실행을 위해 = 358
문자 입력과 뉴메릭 입력의 혼용 = 360
이 장의 요약 = 364
복습문제 = 365
프로그래밍 연습 = 367
Chapter 9 함수
복습 = 369
간단한 함수의 제작과 사용 = 371
함수의 전달인수 = 375
전달인수를 갖는 함수의 정의 : 형식인수 = 376
전달인수를 갖는 함수의 프로토타입 = 378
전달인수를 갖는 함수의 호출 : 실인수 = 378
함수는 블랙 박스다 = 379
return을 이용한 함수값의 리턴 = 380
함수의 형 = 383
ANSI C 함수 프로토타입 = 385
문제점 = 385
ANSI의 해결책 = 387
전달인수가 없는 경우와 전달인수를 지정하지 않는 경우 = 389
함수 재귀 = 389
함수 재귀의 표현 = 390
함수 재귀의 기초 = 391
꼬리 재귀 = 393
함수 재귀와 그의 역 = 396
C 함수는 모두 평등하다 = 398
두 개 이상의 함수를 갖는 프로그램의 컴파일 = 398
UNIX = 399
Linux = 399
DOS용 커맨드 라인 컴파일러 = 399
Windows 및 Macintosh용 컴파일러 = 400
헤더 파일의 사용법 = 400
주소 연산자 : & = 405
호출 함수의 변수값의 변경 = 407
포인터 = 410
간접 연산자(Indirection Operator) = 410
포인터 선언 = 411
함수 간의 소통을 위한 포인터 사용법 = 413
이 장의 요약 = 419
복습문제 = 419
프로그래밍 연습 = 421
Chapter 10 배열과 포인터
배열 = 423
초기화와 스토리지 클래스 = 424
배열의 초기화 = 427
배열에 값 넣기 = 431
포인터 대 배열 = 432
함수, 배열 및 포인터 = 436
전달인수로서의 배열 이름 = 437
포인터 전달인수의 사용법 = 438
포인터와 배열 = 442
포인터 연산 = 442
배열 내용 보호하기 = 445
형식인수와 함께 const 사용하기 = 447
const에 대한 고찰 = 449
다차원 배열 = 452
2차원 배열의 초기화 = 455
더 많은 차원의 배열 = 455
포인터와 다차원 배열 = 456
함수와 다차원 배열 = 460
프로그램 계획 = 466
일반적인 계획 = 467
read_array() 함수 = 469
show_array() 함수 = 470
mean() 함수 = 471
최종 결과 = 471
이 장의 요약 = 473
복습문제 = 475
프로그래밍 연습 = 477
Chapter 11 문자열과 문자열 함수
프로그램 내에서 문자열의 선언 = 483
문자열 상수 = 483
문자열 배열과 초기화 = 485
배열대 포인터 = 486
배열 크기 지정 = 488
문자열 배열 = 489
포인터와 문자열 = 491
문자열 입력 = 492
메모리 할당 = 493
gets() 함수 = 493
fgets() 함수 = 496
scanf() 함수 = 498
문자열 출력 = 500
puts() 함수 = 500
fputs() 함수 = 502
printf() 함수 = 503
사용자 정의 함수 = 503
문자열 함수 = 506
strlen() 함수 = 507
strcat() 및 strncat() 함수 = 508
strcmp() 및 strncmp() 함수 = 510
strcpy() 및 strncpy() 함수 = 516
sprintf() 함수 = 522
그 밖의 문자열 함수들 = 523
문자열 예제 : 문자열의 정렬 = 525
정렬 = 528
ctype.h 문자 함수들과 문자열 = 528
커맨드 라인 전달인수 = 530
통합환경에서의 커맨드 라인 전달인수 = 533
Macintosh에서의 커맨드 라인 전달인수 = 533
문자열을 숫자로 변환 = 534
이 장의 요약 = 538
복습문제 = 539
프로그래밍 연습 = 543
Chapter 12 파일·입출력
파일과 통신 = 547
파일이란 = 548
입·출력 레벨 = 549
표준 파일 = 550
표준 입·출력 = 550
커맨드 라인 전달인수의 검사 = 551
fopen() 함수 = 552
getc()와 putc() 함수 = 554
fclose() 함수 = 555
표준 파일 = 555
단순한 파일 압축 프로그램 = 555
파일 입·출력 : fprintf(), fscanf(), fgets(), fputs() = 558
fprintf()와 fscanf() 함수 = 558
fgets()와 fputs() 함수 = 560
무작위 액세스 : fseek()와 ftell() 함수 = 562
fseek()와 ftell()의 동작 방식 = 564
바이너리 모드 대 텍스트 모드 = 566
이식성 = 566
fgetpos() 및 fsetpos() 함수 = 567
표준 입·출력의 숨겨진 모습 = 568
그 밖의 표준 입·출력 함수 = 569
int ungetc(int c, FILE *fp) = 569
int fflush(FILE *fp)함수 = 570
int setvbuf(FILE *fp, char *buf, int mode, size_t size) 함수 = 570
바이너리 입·출력 : fread()와 fwrite() = 571
size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *fp) 함수 = 573
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *fp) 함수 = 574
int feof(FILE *fp) 함수 및 int ferror(FILE *fp) 함수 = 574
예제 = 575
바이너리 입·출력에서의 무작위 액세스 = 578
이 장의 요약 = 581
복습문제 = 582
프로그래밍 연습 = 584
Chapter 13 스토리지 클래스와 프로그램 개발
스토리지 클래스와 사용 범위 = 589
범위, 연결, 기억 지속성 = 592
자동 변수 = 594
외부 변수 = 597
정의와 선언 = 601
정적 변수 = 601
외부 정적 변수 = 603
다중 파일 = 604
사용 범위와 함수 = 605
레지스터 변수 = 605
어떤 스토리지 클래스를 선택할 것인가 = 606
난수 발생 함수 = 608
주사위 던지기 = 612
수의 정렬 = 615
프로그램의 전반적인 결정 사항들 = 615
수치 데이터의 입력 = 617
getarray() 함수 = 619
데이터의 정렬 = 622
데이터의 출력 = 624
결과 = 626
추가 설명 = 627
ANSI C의 형 특성 = 628
const = 628
volatile = 631
이 장의 요약 = 633
복습문제 = 634
프로그래밍 연습 = 636
Chapter 14 구조체와 기타 데이터형
예제 : 도서 목록 = 639
구조체 템플릿의 설정 = 641
구조체 변수의 정의 = 642
구조체의 초기화 = 644
구조체 멤버의 액세스 = 645
구조체 배열 = 646
구조체 배열의 선언 = 648
구조체 배열 멤버의 식별 = 648
프로그램 상세 설명 = 649
중첩된 구조체 = 651
구조체를 가리키는 포인터 = 653
구조체 포인터의 선언과 초기화 = 654
포인터에 의한 멤버 액세스 = 655
구조체를 함수에 전달 = 656
구조체 멤버를 함수에 전달 = 656
구조체 주소의 사용 = 658
구조체를 전달인수로 전달 = 659
새롭게 개선된 구조체 = 660
구조체와 구조체를 가리키는 포인터의 선택 = 664
구조체의 문자 배열과 문자 포인터 = 666
구조체 배열을 사용하는 함수 = 667
구조체 내용을 파일에 저장 = 669
프로그램의 점검 포인트 = 673
구조체의 다음 단계 = 675
공용체 = 676
typedef = 680
복잡한 선언 = 683
함수와 포인터 = 685
이 장의 요약 = 694
복습문제 = 695
프로그래밍 연습 = 698
Chapter 15 비트 단위 연산
2진수, 비트와 바이트 = 703
2진 정수 = 704
부호가 있는 정수 = 705
2진 실수 = 706
기타 진법 = 707
8진법 = 707
16진법 = 708
비트 단위 연산자 = 709
비트 단위 논리 연산자 = 709
마스크 사용법 = 711
비트 On = 712
비트 Off = 713
비트 토글 = 713
비트값 검사 = 714
비트 단위 시프트 연산자들 = 714
프로그래밍 예제 = 716
또 다른 예제 = 718
비트 필드 = 721
비트 필드 예제 = 722
비트 필드 및 비트 단위 연산자들 = 727
이 장의 요약 = 733
복습문제 = 734
프로그래밍 연습 = 737
Chapter 16 C 선행처리기와 C 라이브러리
명백한 상수 #define = 739
토큰(Token) = 744
상수의 재정의 = 745
#define에서 전달인수의 사용 = 745
문자열 안에 매크로 전달인수 포함시키기 = 749
선택 : 매크로 또는 함수 = 750
#include = 752
헤더 파일 예제 = 753
헤더 파일 사용법 = 755
그 밖의 지시어들 = 757
#undef 지시어 = 757
조건부 컴파일 = 758
열거형 = 764
열거형(enum) 상수 = 765
기본값 = 765
값의 대입 = 765
사용법 = 766
C 라이브러리 = 768
C 라이브러리 액세스 = 768
라이브러리 참고 문헌 사용 = 769
math 라이브러리 = 771
범용 유틸리티 라이브러리 = 774
exit()와 atexit() 함수 = 775
메모리 할당 : malloc()과 free() 함수 = 777
calloc() 함수 = 781
스토리지 클래스와 동적 메모리 할당 = 782
qsort() 함수 = 783
Assert 라이브러리 = 789
이 장의 요약 = 791
복습문제 = 791
프로그래밍 연습 = 793
Chapter 17 고급 데이터 표현
데이터 표현의 탐구 = 798
배열을 넘어 링크된 리스트로 = 801
링크된 리스트 사용법 = 805
결론 = 810
추상적 자료형(Abstract Data Type : ADT) = 810
추상화(Abstraction) = 812
인터페이스 만들기 = 813
인터페이스 사용 = 818
인터페이스 구현 = 820
ADT를 이용한 큐(Queue) 구현 = 828
데이터 표현 인터페이스의 구현 = 830
큐 검사하기 = 840
큐를 이용한 시뮬레이팅 = 843
링크된 리스트와 배열 = 850
2진 검색 트리 = 854
2진 트리 ADT = 856
2진 검색 트리 인터페이스 = 857
2진 트리의 구현 = 860
트리 사용 = 877
트리에 대한 고찰 = 882
다른 방향 = 884
이 장의 요약 = 885
복습문제 = 885
프로그래밍 연습 = 886
Appendix A 참고 서적
C 언어 관련 서적 = 889
프로그래밍 관련 서적 = 890
기타 참고 서적 = 891
Appendix B 연산자
C 연산자 = 893
산술 연산자 = 894
관계 연산자 = 894
대입 연산자 = 895
논리 연산자 = 896
조건 연산자 = 896
포인터 관련 연산자 = 897
부호 연산자 = 897
구조체와 공용체 연산자 = 898
비트 단위 연산자 = 899
기타 연산자 = 900
Appendix C 기본형 및 저장 클래스
요약 : 기본형 = 901
요약 : 단순 변수의 선언 방법 = 903
요약 : 수식어 = 904
Appendix D 수식, 문, 프로그램 제어
요약 : 수식과 문 = 907
요약 : while 문 = 908
요약 : for 문 = 909
요약 : do while 문 = 910
요약 : 선택을 위한 if 문의 사용 = 910
요약 : switch를 이용한 다중 선택 = 912
요약 : 프로그램 점프 = 913
Appendix E ASCII 코드표
Appendix F 표준 ANSI C 라이브러리
진단 : assert.h = 923
문자 처리 : ctype.h = 924
국가별 설정 : locale.h = 925
수학 라이브러리 : math.h = 927
전역 점프 : setjmp.h = 929
신호 처리 : signal.h = 929
가변 인수 : stdarg.h = 931
표준 입출력(I/O) 라이브러리 : stdio.h = 933
일반 유틸리티 : stdlib.h = 935
문자열 처리 : string.h = 941
시간 및 날짜 : time.h = 945
Appendix G C와 C++의 차이점
선언 = 949
함수의 프로토타입 = 950
함수 정의 = 951
설명문 = 952
char 상수 = 952
const 변경자 = 953
구조체와 공용체 = 954
열거형 = 955
포인터형 검사 = 956
Appendix H C9X 위원회
형 = 957
향상된 계산 지원 = 962
와이드 문자(Wide character)의 지원 = 968
Appendix I 복습문제 해답
Chapter 1 = 971
Chapter 2 = 972
Chapter 3 = 974
Chapter 4 = 977
Chapter 5 = 980
Chapter 6 = 983
Chapter 7 = 986
Chapter 8 = 991
Chapter 9 = 992
Chapter 10 = 995
Chapter 11 = 996
Chapter 12 = 1000
Chapter 13 = 1004
Chapter 14 = 1006
Chapter 15 = 1009
Chapter 16 = 1011
Chapter 17 = 1013