[C언어 강좌] #20 강의를 마치며 ~ (완)

프로그래밍 강좌/C 2022. 1. 29. 14:50

안녕하세요 파일입니다. 본 글은 2019년 호기롭게 시작한 C 프로그래밍 강좌의 후기 편입니다. 글을 너무 게을리 쓴 탓에 2년이 넘는 시간 동안 연재를 했습니다만 이 강의도 일종의 프로젝트였기에 완수한 성취도가 매우 높습니다 ㅎㅎ. 이 부분은 제 개인적인 이야기들이니 강의를 다 보신 분들은 궁금하지 않으면 안 보셔도 됩니다. ~BGM https://www.youtube.com/watch?v=jwJfXVwRYW0 이 강의를 쓰게 된 이유 이 강의를 쓰게 된 이유는 박정민님의 저서인 '열혈강의 C언어 본색' 때문이라고 해도 과언이 아닐까 싶습니다. 컴퓨터를 가지고 노는게 너무 재밌었던 저는 초등학교 6학년 때 나만의 프로그램을 만들고 싶어 프로그래밍 카페를 수소문했고, 프로그래밍의 기초가 C언어라는 말을 ..

Article Thumbnail
[C언어 강좌] #19-2 전처리기와 분할 컴파일

프로그래밍 강좌/C 2022. 1. 28. 21:43

조건부 컴파일 C언어는 다양한 운영체제에서 사용되었기 때문에 각 운영체제가 제공하는 표준 함수나 동작, 라이브러리가 조금씩 다를 수 있습니다. 같은 운영체제를 사용한다고 하더라도 사용하는 컴파일러나 라이브러리에 따라서 일부 함수가 없는 경우가 있을 수도 있구요. 예를 들여서 main.c라는 파일을 만들어서 C로 프로그램을 하나 만들었는데 이게 윈도우에서는 제대로 동작하는데, 리눅스에선 함수들 몇개가 제대로 동작하지 않아서 프로그램이 정상적으로 동작하지 않는 경우를 생각해봅시다. 지금까지 배워본 바로는 별다른 해결방법이 없어서 윈도우 용은 main_window.c 로 만들고 리눅스 용은 main_linux.c 로 파일을 만들어서 해결을 했다고 봅시다. 분명 둘다 기능은 동일하게 추가해야 하는데 함수 몇개때..

Article Thumbnail
[C언어 강좌] #19-1 전처리기와 분할 컴파일

프로그래밍 강좌/C 2022. 1. 26. 21:05

모든 일에는 어떤 행동을 처리하기전에 해야할 일이 있습니다. 예를 들어서 밥을 먹기 위해선 밥상을 차리는 것을 먼저해야합니다. 일상에서 먼저 처리해야 하는 일을 '전처리' 라고 가볍게 표현할 수 있습니다. 밥을 먹는 처리를 위해선 밥상을 차리는 '전처리'를 해야한다는 것입니다. 컴퓨팅 세계에서도 전처리를 해야 할 필요가 있습니다. 이때 전처리기를 나타내는 기호로 '#' 을 사용합니다. 전처리기를 사용하면 여러 개의 파일을 분할해서 컴파일 하는것도 가능합니다. 전처리기 프로그램 작성을 한 후 실행까지 과정은 아래와 같습니다 프로그램 작성 -> (전처리) -> 컴파일 -> 링크 -> 실행 컴파일의 경우 고급언어(프로그래밍 언어)로 작성한 프로그램을 기계어(0과 1)로 바꿔주는 작업이였고, 링크는 이 바꿔준 ..

Article Thumbnail
[C언어 강좌] #18 동적 메모리 할당과 가변 인자

프로그래밍 강좌/C 2022. 1. 25. 01:09

안녕하세요? 파일입니다. 어김없이 또 C언어 학습에 있어 새로운 챕터가 시작되었군요. 이번 챕터와 다음 챕터를 마치게 되면 제 C언어 강좌는 끝을 내게 됩니다. 지금 강의는 31편째지만 이 많은 글들을 제가 작성했다는게 참 대단하고 가슴이 웅장해집니다. 마지막에 가까워졌다는게 느껴지실까요? 오늘은 동적 메모리 할당과 가변 인자에 대해 배워봅시다. 프로그램에서 사용되는 메모리에는 정적 메모리와 동적 메모리가 있습니다. 지금부터 본문에서 사용하는 용어인 메모리는 RAM을 지칭하는 것 입니다. 스택 영역, 데이터 영역 같은 정적 메모리는 메모리가 언제 할당되고 해제될지 그리고 요구되는 메모리의 크기가 컴파일할 때 결정되는 메모리 입니다. 그러나 정적 메모리는 프로그램 실행 시간(런타임) 중에 메모리의 크기를 ..

Article Thumbnail
[C언어 강좌] #17-3 콘솔 입출력과 파일 입출력

프로그래밍 강좌/C 2022. 1. 17. 02:16

안녕하세요 파일입니다. 저번에 이어 파일 입출력을 하는 방법에 대해 계속 알아봅시다! 콘솔 입출력과 파일 입출력편은 오늘이 마지막입니다. 달려보아요~ fread() 함수와 fwrite() 함수 3번째 이야기 하는것이지만 파일은 텍스트 파일과 바이너리 파일로 나누어진다고 했습니다. 지금까지 앞에서 학습한 함수들은 전부 텍스트모드에서 작동합니다. 지금까지 배운 함수들론 순수한 이진파일 (0과 1로만 이루어진)을 적어낼 수 없습니다. 텍스트 모드로 적히기 때문에 텍스트만 적을 수 있죠. 그러나 바이너리로 읽기/쓰기를 할 수 있는 함수를 배우면 달라집니다. $cf ) binary : $ 2진법의 이제 바이너리 파일의 파일 입출력을 지원하는 함수를 다뤄봅시다. 이들에는 fread() 함수와 fwrite() 함수가..

Article Thumbnail
[C언어 강좌] #17-2 콘솔 입출력과 파일 입출력

프로그래밍 강좌/C 2022. 1. 13. 01:02

저번 편에선 파일 출력을 하는 소스를 간단하게 실습해보았고 스트림, 파일스트림에 대한 개념 fopen() 을 통해 파일 스트림을 생성 & 파일을 여는것 등을 알아보았습니다. 오늘은 파일 입출력 과정에서 사용되는 함수에 대해 다뤄보겠습니다. fopen() 함수와 fclose() 함수 먼저 파일을 열고 닫는 fopen() 함수와 fclose() 함수에 대해서 공부해보겠습니다. 아래 표는 fopen 함수의 원형입니다. 함수 원형 설명 #include FILE* fopen(const char * filename, const char * mode) 파일 스트림을 생성하고 파일을 연다 실패 : NULL 반환 fopen() 함수는 함수의 인자로 filename(파일 경로)과 mode(파일 열기 모드)를 전달 받아 파..

Article Thumbnail
[C언어 강좌] #17-1 콘솔 입출력과 파일 입출력

프로그래밍 강좌/C 2022. 1. 8. 23:05

안녕하세요 파일입니다. 오늘은 본격적으로 파일 입출력에 대한 이론과 간단한 예제를 다뤄볼겁니다. 참고로 이번편부터 새롭게 알아야할 개념들이 늘어서 포인터 편처럼 머리가 아파질 수 있습니다.. 개인적인 느낌으로는 포인터의 경우 개념은 알만했는데 응용이 어렵다면 여긴 개념은 어려운데 응용하는건 그리 어렵지 않습니다. C언어에 대한 고지가 얼마 남지 않았으니 조금만 힘내봅시다. 화이팅! 콘솔 콘솔(console)은 본래 대형 컴퓨터 시스템과 연결되어 데이터를 입력하는 장치 또는 입력된 데이터를 처리하여 결과를 출력하는 장치를 의미합니다. 여기서의 콘솔은 키보드나 모니터와 같은 표준 입출력 장치를 의미하며, 콘솔 입출력은 키보드에서 데이터를 입력받고 모니터에 데이터를 출력하는것을 말합니다. 그렇다면 파일 입출력..

Article Thumbnail
[C언어 강좌] #16-2 문자열 표준 함수와 기타 표준 함수

프로그래밍 강좌/C 2022. 1. 4. 00:51

sscanf() 함수와 sprintf() 함수 우리가 지금까지 C언어에서 필수적으로 사용해온 함수로 scanf() 함수와 printf() 함수가 있습니다. 이번에 알아볼 함수는 scanf()와, printf() 함수 이름 앞에 s를 붙인 sscanf() 함수와 sprintf() 함수 입니다. 함수 원형 설명 #include int sscanf(const char * s1, const char * s2, ...) 메모리(문자열)에서 데이터를 입력받음 성공 : 데이터의 개수 반환 #include int sprintf(const char * s1, const char * s2, ...) 메모리(문자열)에 데이터를 출력(저장) 성공 : 문자열의 길이 반환 *위 함수의 인자중에 ...은 함수의 인자가 많이 있을 ..

Article Thumbnail