목차
제1장 기초 지식
1-1 C의 유래 = 2
1-2 C를 사용하는 이유 = 2
1-3 C의 미래는 ? = 4
1-4 C의 사용 = 5
1-4-1 프로그램을 작성하기 위한 에디터(editor)의 사용 = 6
1-4-2 원시 파일과 실행 화일 = 7
1-4-3 UNIX 시스템에서의 C컴파일 = 8
1-4-4 IBM PC(Microsoft/Lattice C)에서의 C프로그램 컴파일 = 8
1-4-5 그밖의 방법 = 11
1-4-6 컴파일하는 이유 = 11
1-5 몇 가지 규약 = 11
1-5-1 문자체 = 11
1-5-2 입출력 장치 = 12
1-5-3 키(key) = 12
1-5-4 컴퓨터 시스템 = 12
1-6 도움말 = 12
제2장 C의 소개
2-1 간단한 C프로그램의 예 = 14
2-2 해설 = 15
2-2-1 단계 1 : 간단한 개요 = 15
2-2-2 단계 2 : 세부적 사항 설명 = 17
2-3 간단한 프로그램의 구조 = 22
2-4 프로그램을 읽기 좋게 만드는 방법 = 23
2-5 다른 예 = 24
2-6 함수의 호출 = 25
2-7 이 장에서 배운 내용 = 26
2-8 문제와 해답 = 26
2-9 연습 문제 = 28
제3장 데이터형
3-1 데이터 : 변수(變數)와 상수(常數) = 32
3-2 데이터 : 데이터형 = 32
3-2-1 정수(整數, integer) = 34
3-2-2 부동소수점 숫자(浮動小數點數字, floating, point, number) = 35
3-3 C의 데이터형 = 36
3-3-1 int, short, long 형 = 37
3-3-2 정수형의 선언 = 37
3-3-3 정수형 상수 = 38
3-3-4 정수변수의 초기화(初期化) = 38
3-3-5 용법 = 39
3-3-6 unsigned = 40
3-3-7 char = 40
3-3-8 문자변수(character variables)의 선언 = 40
3-3-9 문자상수(character constant) = 41
3-3-10 프로그램 = 43
3-3-11 float 와 double = 44
3-3-12 부동소수점 변수의 선언 = 45
3-3-13 부동소수점 상수(浮動小數點 常數, floating-point constants) = 45
3-3-14 그 밖의 수형 = 48
3-3-15 수형의 크기 = 49
3-4 데이터형의 사용시 주의할 점 = 50
3-5 이 장에서 배운 내용 = 50
3-6 문제와 해답 = 53
제4장 문자열, #define, printf( ), scanf( )
4-1 문자열(character strings)의 개요 = 57
4-1-1 스트링의 길이-strlen( ) = 59
4-2 상수와 C의 선행처리기(preprocessor) = 61
4-2-1 C는 다른 명칭을 만들어 변장할 수 있다(ALIAS를 만든다고 한다) = 64
4-3 printf( )와 scanf( )의 조사 및 개발 = 68
4-3-1 printf( )의 사용 = 69
4-3-2 printf( )의 변환사양 수정자(conversion specification modifier) = 72
4-3-3 보기 = 72
4-3-4 printf( )를 이용한 변화 = 75
4-3-5 scanf( )의 사용에 대한 몇 가지 예 = 77
4-4 printf( ) = 79
4-5 이 장에서 배운 내용 = 84
4-6 문제와 해답 = 85
제5장 연산자, 산술식, 문
5-1 소개 = 89
5-2 기본적인 연산자(operator) = 91
5-2-1 치환연산자 ; = = 92
5-2-2 덧셈연산자 ; + = 94
5-2-3 뺄셈연산자 ; - = 94
5-2-4 부호연산자 ; - = 94
5-2-5 곱셈연산자 ; * = 95
5-2-6 나눗셈연산자 ; / = 97
5-2-7 연산자 우선순위 = 98
5-3 그밖의 연산자(제5장 첫 페이지 표를 참조하자) = 101
5-3-1 모듈러스 연산자 ; % = 102
5-3-2 증가와 감소 연산자 ; ++와 -- = 103
5-3-3 연산순위(연산 우선순위) = 112
5-3-4 너무 영리해도 안 된다 = 112
5-3-5 코머(comma) 연산자 = 113
5-4 수식(expression)과 문장(statement) = 114
5-4-1 수식(expression) = 114
5-4-2 문장(statement) = 115
5-4-3 복문(블럭, block) = 117
5-5 수형의 변환 = 120
5-5-1 캐스트 연산자(cast operator) = 122
5-6 여러 프로그램 = 124
5-7 이 장에서 배운 내용 = 129
5-8 문제와 해답 = 129
5-9 연습 문제 = 131
제6장 입출력함수와 리디렉션
6-1 단일문자의 입력·출력(I/O) : getchar( )와 putchar( ) = 135
6-2 버퍼(buffer) = 136
6-3 심화 학습 = 138
6-3-1 한 줄을 읽는 방법 = 141
6-3-2 화일을 읽는 방법 = 142
6-4 리디렉션(redirection)과 화일(file) = 145
6-5 UNIX = 146
6-5-1 출력 방향 지정 = 146
6-5-2 입력 방향 지정 = 147
6-5-3 리디렉션의 효용 = 148
6-5-4 UNIX이외의 운영체계 = 152
6-5-5 보충설명 = 153
6-6 시스템 종속적인 I/O : 8086/8088 I/O 포트 = 156
6-6-1 포트(port)의 사용 = 158
6-6-2 요약 = 160
6-7 컴퓨터의 잠재능력 개발 = 161
6-8 이 장에서 배운 내용 = 163
6-9 문제와 해답 = 163
6-10 연습 문제 = 164
제7장 선택방법(choosing alternatives)
7-1 if문 = 170
7-2 if문에 else를 함께 사용하자. = 172
7-2-1 선택 : if-else = 172
7-2-2 다중선택(multiple choice) : else-if = 174
7-2-3 if else의 쌍을 만드는 방법 = 177
7-3 어느 쪽이 더 큰가 : 관계연산자와 관계식 = 180
7-3-1 참(true)이란 무엇인가? = 182
7-3-2 그 외에 어떤 것이 참(true)인가 ? = 183
7-3-3 참(true)에 대한 문제점들 = 184
7-3-4 관계연산자의 우선순위 = 185
7-4 논리연산(logical operation) = 187
7-4-1 우선순위 = 189
7-4-2 수식의 평가순서 = 189
7-5 단어 계수 프로그램(word count porgram) = 193
7-6 문자 스케치(character sketch) = 194
7-6-1 프로그램의 분석 = 197
7-6-2 행의 길이 = 197
7-6-3 프로그램 구조(program structure) = 197
7-6-4 데이터 형태 = 199
7-6-5 오류 검사(error check) = 201
7-7 조건연산자(condition operator) : ? : = 202
7-8 다중택일 : switch break = 206
7-9 이 장에서 배운 내용 = 211
7-10 문제와 해답 = 212
제8장 루프(loop)와 기타 제어문
8-1 while 루프 = 217
8-1-1 while 루프의 끝내기 = 219
8-2 알고리즘과 의사 코드(algorithm and pseudo code) = 219
8-3 for 루프 = 224
8-3-1 융통성있는 for문 = 225
8-3-2 코머 연산자(comma operator) = 230
8-3-3 제노(Zeno)와 for루프의 대결 = 232
8-4 탈출조건 루프 : do while = 234
8-5 어떤 루프(loop)를 선택하여 쓸 것인가? = 239
8-6 중첩된 루프(nested loop) = 241
8-7 다른 제어문 : break, continue, goto = 244
8-7-1 goto문을 피하는 방법 = 246
8-8 배열 = 261
8-9 입력방법 = 265
8-10 요약 = 270
8-11 이 장에서 배운 내용 = 271
8-12 문제와 해답 = 271
8-13 연습 문제 = 274
제9장 함수 활용법
9-1 간단한 함수를 만들어 사용하는 법 = 277
9-2 함수인자(function arguments) = 282
9-2-1 인자를 갖는 함수의 정의 : 형식인자 = 285
9-2-2 인자를 가진 함수의 호출 : 실인자(actual arguments) = 286
9-2-3 블랙박스로서의 관점(함수를 하나의 블랙박스로 본다) = 286
9-2-4 다중인자 = 287
9-3 함수로부터 결과값의 귀환 : return = 287
9-4 지역변수(local variables) = 295
9-5 번지찾는 법 : &연산자 = 295
9-6 호출 프로그램의 변수의 변경 = 297
9-6-1 포인터(pointer) = 299
9-6-2 간접연산자 : * = 300
9-6-3 포인터의 선언 = 303
9-6-4 함수간 통신을 위한 포인터의 사용 = 304
9-7 포인터의 개념을 확실히 하기 위한 에러들 = 309
9-8 함수에 대해서 배운 것을 응용해 보자 = 320
9-9 함수형의 정의 방법 = 323
9-10 C의 모든 함수는 동일하게 만들어진다 = 326
9-11 요약 = 330
9-12 이 장에서 배운 내용 = 331
9-13 문제와 해답 = 331
9-14 연습 문제 = 332
제10장 스토리지 클래스(storage class)와 프로그램 개발
10-1 기억장소 종류(storage class)와 통용범위 규칙 = 334
10-1-1 auto(자동변수, 自動變數) 「스택에 저장된다」 = 336
10-1-2 static(정적변수, 靜的變數) = 339
10-1-3 extern(외부변수, 外部變數) = 349
10-1-4 register(레지스터 變數) = 355
10-1-5 함수와 스토리지 클래스(storage class)와의 관계 = 356
10-1-6 기억장소 종류와 함수 = 360
10-2 난수함수(random number function) = 363
10-3 주사위 게임 = 367
10-4 정수 채취 함수 : getint( ) = 367
10-4-1 계획 = 367
10-4-2 getint( )에서 정보의 흐름 = 368
10-4-3 getint( )의 내부(함수 getint( ) 블랙박스 내부) = 369
10-4-4 문자 숫자열은 정수 숫자도 변환함수 : stoi( ) = 372
10-4-5 실행해 보기(앞에서 작성한 getint.c와 stoi.i 파일을 여기서 main프로그램에서 포함시켜 수행함) = 375
10-5 수(number)의 정렬(sort) = 376
10-5-1 수를 읽어 들이기 = 377
10-5-2 데이터 표현 방법의 선택 = 377
10-5-3 입력을 끝내기 = 378
10-5-4 좀 더 생각해 보자 = 378
10-5-5 main( )과 getarray( ) = 379
10-5-6 getarray.c에 대한 설명 = 381
10-5-7 데이터의 정렬(sort) = 382
10-5-8 데이터의 인쇄(print) = 385
10-5-9 결과 = 386
10-6 요약 = 391
10-7 이 장에서 배운 내용 = 392
10-8 문제와 해답 = 392
10-9 연습 문제 = 394
제11장 C의 선행처리기
11-1 기호화된 상수 : #define = 396
11-2 인자를 갖는 #define = 398
11-3 매크로 또는 함수? = 402
11-4 파일 포함 기능 : #include = 403
11-4-1 헤더 화일 : 예 = 404
11-5 다른 지정어 : #undef, #if, #ifdef, #ifndef, #else, #cndif = 406
11-6 이 장에서 배운 내용 = 408
11-7 문제와 해답 = 408
11-8 연습문제 = 409
제12장 배열과 포인터
12-1 배열(array) = 410
12-1-1 초기화와 스토리지 클래스(기억장소의 종류) = 411
12-2 배열(array)에 대한 포인터(pointer) = 416
12-3 함수, 배열 및 포인터(function, array and pointer) = 418
12-4 배열의 취급에 포인터 사용 = 420
12-5 포인터 연산(pointer operation) = 422
12-6 다차원 배열(multidimensional array) = 426
12-6-1 이차원 배열의 초기화 = 429
12-7 포인터와 다차원 배열(pointer and multimensional array) = 430
12-7-1 함수와 다차원 배열 = 433
12-8 배열과 포인터의 개념을 확실히하는 예제들 = 434
12-9 이 장에서 배운 내용 = 452
12-10 문제와 해답 = 452
12-11 연습 문제 = 454
제13장 문자 스트링과 스트링 함수
13-1 프로르램에서 문자 스트링의 정의 = 460
13-1-1 문자스트링 상수(character string constant) = 460
13-1-2 문자 스트링의 배열과 초기화 = 461
13-1-3 배열 대 포인터(array vs. pionter) = 462
13-1-4 명시적(明示的)인 기억장소 크기의 표기(specifying storage explicitly) = 464
13-1-5 문자 스트링의 배열 = 465
13-1-6 포인터와 스트링(pionter and strings) = 467
13-2 스트링 입력(string input) = 468
13-2-1 기억공간의 확보(creating space) = 468
13-2-2 gets( )함수(스트링 입력을 위한 함수) = 469
13-2-3 scanf( )함수 = 471
13-3 스트링 출력(string output) = 472
13-3-1 puts( )함수 = 473
13-3-2 printf( )함수(printf( )함수에 대해서 부록에 상세한 설명이 있음) = 474
13-3-3 gets, puts, scanf 함수의 용도를 확실하게 하는 보기들 = 475
13-4 스트링 출력함수의 제작 = 484
13-5 스트링 함수(string function) = 486
13-5-1 strlen( )함수(스트링의 길이를 문자갯수로 나타내는 함수이다) = 486
13-5-2 strcat( )함수 = 487
13-5-3 strcmp( )함수 = 488
13-5-4 strcpy( )함수 [스트링 복사(string copy) 함수] = 491
13-6 스트링 예제 : 스트링의 정렬(sorting strings) = 493
13-7 명령행 인자(command ; line arguments) = 498
13-8 이 장에서 배운 내용 = 502
13-9 문제와 해답 = 502
13-10 연습 문제 = 504
제14장 구조체와 그밖의 데이터형
14-1 예제 프로그램 : 서적목록의 작성 = 506
14-2 구조체 템플릿(structure template)의 작성법 = 508
14-3 구조체 변수(structure variables)의 정의 = 509
14-3-1 구조체의 초기화(initialize of structure) = 511
14-4 구조체의 구성원 참조 = 512
14-5 구조체 배열(structure array) = 513
14-5-1 구조체 배열로 된 변수 선언 = 515
14-5-2 구조체 배열의 구성원 식별 = 516
14-5-3 프로그램의 세부 사항 = 516
14-6 새끼쳐진 구조체(nested structure) = 517
14-7 구조체에 대한 포인터 = 520
14-7-1 구조체에의 포인터의 선언과 초기화 = 521
14-7-2 포인터에 의한 구성원 참조 = 522
14-8 함수에 구조체의 전달 방법 = 524
14-8-1 구조체 구성원의 사용(함수에 구조체 전달 방법 1) = 524
14-8-2 구조체 번지(structure address)의 사용(함수에 구조체 전달 방법 2) = 526
14-8-3 배열(array)의 사용(함수에 전달 방법 3) = 527
14-9 구조체(structure) : 그 다음은 ? = 529
14-10 유니언(union, 共用體) = 531
14-11 typedef = 533
14-12 구조체의 개념을 분명히 하는 예제들 = 537
14-13 이 장에서 배운 내용 = 574
14-14 문제와 해답 = 575
14-15 연습 문제 = 577
제15장 C라이브러리와 화일 입출력
15-1 C라이브러리와 액세스(access) = 579
15-1-1 자동 액세스 = 580
15-1-2 화일의 포함(inclusion) = 580
15-1-3 라이브러리의 포함 = 580
15-2 지금까지 사용한 라이브러리 함수 = 580
15-3 화일과 통신 = 581
15-4 화일이란?(화일의 본질에 대해서 알아본다) = 582
15-5 간단한 화일 입력 프로그램 : fopen( ), fclose( ), getc( ), putc( ) = 583
15-5-1 화일의 개방: fopen( ) = 584
15-5-2 화일의 폐쇄: fclose( ) = 585
15-5-3 버피화된 텍스트 화일(buffered text file) = 585
15-5-4 화일 I/O: getc( )와 putc( ) = 586
15-6 간단한 화일 축약(condensing) 프로그램 = 587
15-7 화일 I/O: fprintf( ), fscanf( ), fgets( ), fputs( ) = 591
15-7-1 fprintf( )와 fscanf( ) 함수 = 591
15-7-2 fgets( ) 함수 = 593
15-7-3 fputs( ) 함수 = 594
15-8 랜덤 액세스(random access) : fseek( ) = 595
15-9 문장의 조사와 변환 = 603
15-10 스트링 변환: atoi( ), atof( ) = 607
15-11 탈출 함수: exit( ) = 609
15-12 기억장소 할당(mcmory allocation) : malloc( )과 calloc( ) = 610
15-13 malloc( )함수, 포인터 및 리스트(list) 활용을 위한 예제 = 616
15-14 기타 라이브러리 함수 = 648
15-15 맺음말 = 649
15-16 이 장에서 배운 내용 = 649
15-17 문제와 해답 = 650
15-18 연습문제 = 652
부록 A 관련 서적 목록 = 655
부록 B C의 키워드(keyword) = 657
부록 C C예산자 = 659
부록 D 데이터 수행과 기억장소(storage class)의 종류 = 664
부록 E 프로그램 흐름 제어 = 667
부록 F 비트 조작 : 연산자와 필드(field) = 674
부록 G 이진수와 기타 진법 = 680
부록 H IBM PC음악 = 684
부록 I C의 확장 = 680
부록 J ASCII표 = 695
부록 K stdio.h의 보기 = 699
부록 L 표준함수 일람표 = 702
부록 M 기타 = 710
부록 N scanf( ) 함수의 특징 해설과 예제들 = 713
찾아보기 = 729
INDEX = 732