3,087 0 0 125 216 0 8년전 0

C언어 표준 라이브러리 함수 가이드

C언어는 1972년 벨 연구소의 데니스 리치가 B를 기반으로 만든 언어입니다. 1983년 미국 국가 표준 협회인 ANSI에서 ANSI X3.159-1989 표준을 지정한 것이 C언어 표준의 시작입니다. 1999년 C99 표준으로 잘 알려진 ISO/IEC 9899:1999를 출간하고 2005년에는 ANSI에서도 C99를 표준으로 채택합니다. 그리고 2011년에 C11 표준인 ISO/IEC 9989:2011을 출간합니다. ANSI X3.159-1989 표준에서는 미국 국가 표준 협회에서 최초로 지정하였고 변수 이름과 함수 이름 등을 영어 알파벳과 언더 바, 숫자만 사용할 수 있습니다. char 형식도 다양한 기호와 숫자 문자, 영어 알파벳은 표현할 수 있지만 한글이나 한자 등을 표현하려면 문자열을 빌려..
C언어는 1972년 벨 연구소의 데니스 리치가 B를 기반으로 만든 언어입니다. 1983년 미국 국가 표준 협회인 ANSI에서 ANSI X3.159-1989 표준을 지정한 것이 C언어 표준의 시작입니다. 1999년 C99 표준으로 잘 알려진 ISO/IEC 9899:1999를 출간하고 2005년에는 ANSI에서도 C99를 표준으로 채택합니다. 그리고 2011년에 C11 표준인 ISO/IEC 9989:2011을 출간합니다.

ANSI X3.159-1989 표준에서는 미국 국가 표준 협회에서 최초로 지정하였고 변수 이름과 함수 이름 등을 영어 알파벳과 언더 바, 숫자만 사용할 수 있습니다. char 형식도 다양한 기호와 숫자 문자, 영어 알파벳은 표현할 수 있지만 한글이나 한자 등을 표현하려면 문자열을 빌려서 표현해야 하는 한계를 갖고 있었죠. 또한 함수의 반환 형식을 명시하지 않아도 오류를 발생하지 않아 많은 부분에서 논리적 버그의 책임은 개발자의 몫이었습니다.

ISO 국제 표준 기구에서 제시한 C99에서는 다양한 국가의 언어를 수용하기 위해 wchar_t 형식을 추가하였고 함수의 반환 형식을 명확하게 명시하도록 제안했습니다. 하지만 여전히 문자열 복사나 문자열 입력 등의 다양한 함수에서 개발자가 선언한 버퍼의 크기를 표준 라이브러리 함수에서 전달받지 않아 버퍼 오버 플로우 문제점이 남아있었죠.

C11 표준에서는 다양한 버퍼 오버 플로우 문제가 있는 함수들을 버퍼의 크기를 입력 인자로 전달하게 수정하였습니다. 그리고 표준 라이브러리 내부에서 동적으로 개체를 만들어 포인터를 반환하는 함수를 포인터의 주소를 입력 인자로 전달받고 내부적으로 문제가 있을 때 에러 형식 값을 반환하게 수정하였습니다. 또한 asctime처럼 함수 내부에서 수행한 결과가 있는 메모리 주소를 반환하는 함수 중에 언제나 같은 주소를 반환하여 두 번 이상 호출했을 때 마지막 호출한 결과만 확인할 수 있었던 함수들도 포인터의 주소를 입력 인자로 전달하며 표준 라이브러리 함수 내부에서 값을 설정하고 문제가 있을 때 에러 형식 값을 전달하게 수정하였습니다.

이 책에서는 C99와 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다. 이 책은 단순한 문법을 전달하기 보다는 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다. 이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다.
저자 장문석
약력
2003년~ 2014년 현재 선문비트교육센터 담임강사
2010년 응용 소프트웨어의 접근성에 대한 평가 도구 개발 논문 발표
소프트웨어 접근성 평가 도구 SAVE개발
2010년06월01일~2012년 05월 31일 QoLT 산업기술기반 지원센터 구축 사업 연구과제
집필 저서
IT 전문가로 가는 길 Escort C언어
IT 전문가로 가는 길 Escort C++
IT 전문가로 가는 길 Escort C#
IT 전문가로 가는 길 Escort 자료구조와 STL
IT 전문가로 가는 길 Escort GoF의 디자인 패턴
IT 전문가로 가는 길 Escort GoF의 디자인 패턴 C#
IT 전문가로 가는 길 Escort Pro 나만의 웹 검색 엔진 만들기
STEP BY STEP STEP 1 스택 계산기 - C언어 (컴파일러 개념 적용)
삶의 질 향상을 위한 소프트웨어 자동화 기술, UI 자동화

㈜유페이퍼 대표 이병훈 | 316-86-00520 | 통신판매 2017-서울강남-00994 서울 강남구 학동로2길19, 2층 (논현동,세일빌딩) 02-577-6002 help@upaper.net 개인정보책임 : 이선희