C2011.01.20 00:33


http://kusanaki.tistory.com/tag/%ED%95%AD%ED%95%B4






마침내 끝났습니다.









  마침내 길고 길었던 항해가 끝났습니다. 아마도 이 글을 읽는 분들 중 저의 첫번째 강의부터 열심이 보셨던 분들이 여럿 계셨으면 하는 바램이 간절합니다^^ 제가 첫번째 강좌를 야심차게 시작했을 때가 2009 년 4월 16일 입니다. (사실 1 월 경에 시범적으로 C 언어 강좌 두 편을 올린 적이 있었는데 너무 어렵게 쓰는 바람에 반응이 없어서 다시 쓴 것입니다 ㅎ) 그리고 제가 마지막 강좌를 업로드 한 날짜가 2011 년 1 월 18일 이지요. 무려 2 년 간의 엄청난 격차가 있습니다. 평균적으로 따지면 1 달에 강좌 한 편도 올린 것이 아닌 셈인데, 제 블로그를 꾸준히 방문해 주신 여러분 덕분에 이렇게 강좌가 완성될 수 있었습니다. 



감사의 말

아래 분들은 제 블로그에 (특히 더 많이) 기여를 해주신 분들입니다. 아래 여러분들께 저의 특별한 감사의 말을 전하고 싶습니다.

코이치 (39)
곰돌 (22)
song (14)
감사합니다 (14)
희망 (11)
스프 (10)
프로그래머가 되고싶은 1인. (8)
괴도 (7)
ore (7)
두루뭉술 (7)
질무이있으요. (6)
모르겠어요 (6)
배움의장터 (6)
winape (6)
질문 (6)
eager (5)
행인 (5)
궁금 (5)
sweetick (5)
Stephanos (5)
울림 (5)
공부중 (5)

그 외에 제 블로그를 방문해 주신 여러분!

  감사합니다:)


씹어먹는 C 언어 칭찬

  인터넷을 보다보면 수 많은 C 언어 강좌들이 있습니다. 하지만 안타까운 사실은 제가 본 대다수의 C 언어 강좌들은 대개 중간에 끝나는 경우가 엄청 많았습니다. 그 분들의 문제가 과연 무엇이였을까요? 개인적으로 생각했을 때 두 가지 문제가 있었다고 생각합니다. 먼저 강좌를 쓰는 일은 엄청난 끈기가 필요한 작업 입니다. 왜냐하면 자신이 완벽히 알고 있지 않는 한 남한테 가르쳐 주는 일은 매우 어려운 일이기 때문이지요. 예를 들면 포인터 하나를 가르치려고 해도, '포인터가 왜 필요한지' 부터 시작해서 '포인터의 타입은 왜 있는 것인지', 등등 모든 내용을 꿰뚤고 있어야 합니다. 그 만큼 가르치는 것은 엄청난 일이지요. 더군다나 얼굴 보고 맞대고 설명 하는 것도 힘든데 인터넷 상에서 글 만드로 이야기 할려니 얼마나 힘들겠습니까.

  이를 이겨내더라도 문제가 한 가지 더 있습니다. 바로 읽는이와의 '소통' 이 불가능 하다라는 점 입니다. 아무리 가르쳐 주는 사람이 훌륭하다고 해도 읽는 사람의 모든 부분을 이해시켜 줄 수 없는 것이 아닙니다. 한 마디로 한개의 강좌로 독자의 가려운 곳을 정확하게 긁어줄 수 없는 셈이지요. 이를 위해서는 확실한 '애프터 서비스' 가 필요한데 이것이 바로 독자와 '댓글' 을 통해 소통하는 것이였습니다. 제 강좌에서 가장 강조 했던 부분이 바로 이 부분이였습니다. 강좌에서 궁금한 점이나 이해가 안가는 점이 있다면 무조건 '댓글을 남겨라' 이지요. 이렇게 댓글을 남겨서 이를 해결해 주는 방법을 통해서 저는 제 글을 읽는 여러분 모두와 확실하게 소통을 할 수 있었다고 생각합니다. 바로 이 것이 1 달에 강좌를 평균적으로 1 편 씩만을 써도 끝까지 완결할 수 있는 방법이지요 :)

   아무튼 이제 여러분은 'C 언어' 라는 하나의 산을 정ㅋ벅ㅋ 하셨습니다.

그럼 여러분은 이제 무얼 해야 될까요?

 
  일단 여러가지를 하실 수 있습니다. 만일 C 언어를 다른 곳에서 이미 배우시고 제 강좌를 '복습' 차원에서 읽으신 분들이라면 제 강좌를 다시 볼 필요가 없겠지요. 하지만 C 언어를 제 강좌를 통해 처음 접했던 분들이라면 복습이 최고라고 말씀드리고 싶습니다. 물론 여기서 복습이란 말은 다시 꼼꼼히 정독 하라는 것이 아니라 대충 필요한 강좌만 다시 보는게 좋을 것이라는 거지요.

  아래는 저의 전체 강좌 리스트 입니다.

  1. 2009/04/16 씹어먹는 C 언어 - <1. C 언어가 뭐야?> 
  2. 2009/04/17 씹어먹는 C 언어 - <2 - 1. C 언어 본격 맛보기> 
  3. 2009/09/24 씹어먹는 C 언어 - <2 - 2. 주석(Comment)에 대한 이해> 
  4. 2009/10/12 씹어먹는 C 언어 - <2 - 3. 수를 표현하는 방법(기수법)> 
  5. 2009/04/22 씹어먹는 C 언어 - <3. 변수가 뭐지? > 
  6. 2009/04/24 씹어먹는 C 언어 - <4. 계산하리 > 
  7. 2009/04/27 씹어먹는 C 언어 - <5. 문자 입력 받기> 
  8. 2009/04/28 씹어먹는 C 언어 - <6. 만약에...(if 문)> 
  9. 2009/08/06 씹어먹는 C 언어 - <7. 뱅글 뱅글 (for, while) > 
  10. 2009/08/06 씹어먹는 C 언어 - <8. 우분투 리눅스에서 C 프로그래밍 하기>
  11. 2009/08/15 씹어먹는 C 언어 - <9. 만약에... 2탄 (switch 문)> 
  12. 2009/08/15 씹어먹는 C 언어 - <10. 연예인 캐스팅(?) (C 언어에서의 형 변환)> 
  13. 2009/11/14 씹어먹는 C 언어 - <11 - 1. C 언어의 아파트 (배열), 상수> 
  14. 2009/10/29 씹어먹는 C 언어 - <11 - 2. C 언어의 아파트2 (고차원의 배열)> 
  15. 2009/11/09 씹어먹는 C 언어 - <12 - 1. 포인터는 영희이다! (포인터)>
  16. 2009/11/14 씹어먹는 C 언어 - <12 - 2. 포인터는 영희이다! (포인터)>
  17. 2009/11/26 씹어먹는 C 언어 - <12 - 3. 포인터는 영희이다! (포인터)> 
  18. 2009/12/14 씹어먹는 C 언어 - <13 - 1. 마술 상자 함수(function)> 
  19. 2009/12/19 씹어먹는 C 언어 - <13 - 2. 마술 상자 함수 2 (function)> 
  20. 2009/12/22 씹어먹는 C 언어 - <13 - 3. 마술 상자 함수 3 (function)> 
  21. 2009/12/27 씹어먹는 C 언어 - <13 - 4. 마술 상자 함수 (생각해볼 문제에 대한 아이디어)> 
  22. 2009/12/29 씹어먹는 C 언어 - <14. 컴퓨터의 머리로 따라가보자 - 디버깅(debugging)> 
  23. 2009/12/29 씹어먹는 C 언어 - <15 - 1. 일로와봐, 문자열(string)> 
  24. 2010/01/25 씹어먹는 C 언어 - <15 - 2. 일로와봐, 문자열(string) - 버퍼에 관한 이해> 
  25. 2010/02/01 씹어먹는 C 언어 - <15 - 3. 일로와봐, 문자열(string) - 문자열 지지고 볶기/리터럴> 
  26. 2010/02/08 씹어먹는 C 언어 - <15 - 4. 일로와봐, 문자열(string) - 도서 관리 프로젝트> 
  27. 2010/02/14 씹어먹는 C 언어 - <16 - 1. 모아 모아 구조체(struct)> 
  28. 2010/04/11 씹어먹는 C 언어 - <16 - 2. 모아 모아 구조체(struct) - 구조체 인자로 가진 함수> 
  29. 2010/06/13 씹어먹는 C 언어 - <16 - 3. 구조체와 친구들(공용체(union), 열거형(enum))> 
  30. 2010/06/19 씹어먹는 C 언어 - <17. 변수의 생존 조건 및 데이터 세그먼트의 구조>
  31. 2010/07/16 씹어먹는 C 언어 - <18 - 1. 파일 뽀개기 (헤더파일과 #include) > 
  32. 2010/07/20 씹어먹는 C 언어 - <18 - 2. 파일 뽀개기 (# 친구들, 라이브러리)> 
  33. 2010/08/02 씹어먹는 C 언어 - <19. main 함수의 인자, 텅 빈 void 형> 
  34. 2010/08/03 씹어먹는 C 언어 - <20 - 1. 동동동 메모리 동적할당(Dynamic Memory Allocation)> 
  35. 2010/09/13 씹어먹는 C 언어 - <20 - 2. 메모리 동적할당 + 메모리 갖고 놀기> 
  36. 2010/11/21 씹어먹는 C 언어 - <21. 매크로 함수, 인라인 함수> 
  37. 2010/12/25 씹어먹는 C 언어 - <22. C 언어의 잡다한 키워드들 (typedef, volatile, #pragma)> 
  38. 2010/12/28 씹어먹는 C 언어 - <23 - 1. 파일 하고 이야기 하기 (파일 입출력의 기본적 이해)> 
  39. 2011/01/10 씹어먹는 C 언어 - <23 - 2. 파일 하고 이야기 하기 (파일 입출력)> 
  40. 2011/01/17 씹어먹는 C 언어 - <23 - 3. 파일 하고 이야기 하기 (파일 입출력 - 마무리)>
  41. 2011/01/18 씹어먹는 C 언어 - <24. 더 빠르게 실행되는 코드를 위하여 (C 코드 최적화)>

  위 많은 강좌들 중에서 여러분들이 한 번 더 보면 좋을 것이라 생각되는 강좌들은


  이 9 개의 강좌들 입니다. 왜냐하면 위 9 개의 강좌들에서는 여러분이 다른 곳에서 접하기 쉽지 않은 내용들이 많이 들어가 있기 때문에 제 강좌를 졸업 하기 전에 다시 한 번 읽어 두는 것이 많이 도움이 될 듯 합니다. 또한 C 언어를 보다 잘하기 위해서는 여러가지 표준 라이브러리 함수들과 친해지는 것이 중요한데, 제 블로그의 오른쪽 카테고리에 보면 C 언어 레퍼런스 라는 부분이 있습니다. 각 카테고리에 들어가셔서 나오는 여러가지 함수들과 친숙해 지는 것도 좋을 법 합니다.


  자 그럼 위 강좌들도 다 읽고 C 언어로 왠만한 프로그램은 다 만들 수 있게 되었다면 어떻게 할까요. 그럼 이제 여러분들에게는 엄청나게 많은 선택권이 주어집니다. 일단 많은 사람들의 경우 다른 언어를 한 가지씩 더 배우게 됩니다. 대부분 C++ 아니면 JAVA 와 같은 객체 지향 언어(Object Oriented Programming Language) 를 배우거나 파이썬(Python), 펄(Perl), 루비(Ruby) 와 같은 인터프리팅 형식의 언어들을 배울 수 도 있습니다. 저는 개인적으로 C++ 을 먼저 배우기를 추천하고요.. 아니면 다른 언어를 배우지 않고 API 와 같은 윈도우즈 프로그래밍을 시작할 수 도 있습니다만, 제 생각으로는 C++ 을 먼저 배우고 API 를 시작하는 것이 훨씬 도움이 될 듯 합니다.

  최근 들어서 아이폰 개발이나 안드로이드 개발에 붐이 일면서 Objective-C (아이폰), JAVA(안드로이드) 언어들을 배우는 사람들도 늘고 있습니다. 물론 이들을 배우는 것도 좋지만 개인적으로 생각해 볼 때 아무래도 C 를 배웠다면 'C 의 거의 대부분의 문법 요소들을 받아들인' C++ 을 배우는 것이 더 좋을 것 같네요.

  그래서 저는 씹어먹는 C 언어를 끝내고 '씹어먹는 C++' 을 연재할 생각입니다. 더 다른 강좌 이름이 생각나신다면 댓글로 달아주시고요 ㅎㅎ 여러분들도 C 언어를 다 배웠다고 제 사이트를 잊지 말고 저의 두 번째 작품인 씹어먹는 C++ 에 관심을 가져 주시기 바랍니다.


저의 씹어먹는 C 언어 강좌를 TEX 형식 파일로 만들어주실 분 안계시나요 ??



씹어먹는 C 언어의 PDF 버전이 드디어 나왔습니다. 

이제 모바일에서도 편하게 보실 수 있습니다.

여기를 클릭해서 확인하세요!




Posted by Psi

댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. tlwns5598

    씹어먹는 씨언어를 완료하셨으니 . 자바먹는 자바도 한번 해주세요!

    2014.05.22 23:11 [ ADDR : EDIT/ DEL : REPLY ]
    • 먼저 C++ 강좌를 완료할 생각입니다. (언제 끝날지는 모르겠지만 ㅠㅠ)

      2014.07.27 20:47 신고 [ ADDR : EDIT/ DEL ]
  3. Dveloper

    개인개발자 인데요 1년정도 쉬었더니 프로그래밍대해 무감감 해지더군요 그래서 영상을 다운받아서 다시 공부해볼까 생각하다가 글로 된 강좌 를 찾게되었는데요 정말 좋은 내용입니다. ㅎㅎ 정말 감사드립니다.

    2014.08.08 00:17 [ ADDR : EDIT/ DEL : REPLY ]
  4. BT

    대학교 때 C/C++로 과제 짜면서 졸업했는데 사실 그때는 기초 개념을 제대로 이해하기 보단 과제를 할 수 있는 정도만 익히고 넘어간 내용이 많았던 것 같습니다. 이번 기회에 많이 배우고 갑니다. 감사합니다!

    2014.09.27 19:21 [ ADDR : EDIT/ DEL : REPLY ]
  5. 나다했당

    2014.11.02 15:10 [ ADDR : EDIT/ DEL : REPLY ]
  6. 브라이안

    오와 정말 대단하십니다. 무료로 이런 수고를 하신다니 ㅎㅎ 그것도 굉장히 좋은내용이 들어있네요(딴걸 본적없지만ㅋ)
    제가 외국에있어서 c언어 공부하기가 어려웠는데 우연히 구글리으로 찾아서 열심히 공부했습니다.(저만의 도서관 관리프로그램도 어렵사리 완성했네요.,( 뿌듯함))
    이정도내용이면 일반학원이나 책한권 내용을 배운거겠죠??
    첫강부터 시작해서 마지막에 약간흔들렸지만 결국 다이해하기위해 열심히했습니다.
    이런 강좌 올려주셔서 감사하고 c++도 배울려고합니다.감사합니다.

    2015.01.03 10:10 [ ADDR : EDIT/ DEL : REPLY ]
  7. robogab

    국내 좋은 강좌몰라 외국 사이트에서 찿다가 우연히 이 사이트를 알게 되었습니다. 저역시 오랬동안 C를 가지고 업무를 했던 사람입니다만, 늘상 쓰던 구문만 사용하기 때문에 전체를 다 꿰뚫지 못하고 있었는데, 빈곳을 채울수 있는 좋은 기회였네요. 좋은 글 올리느라 정말 고생 많으셨습니다. 앞으로도 꾸준한 활동 부탁드립니다.

    2015.02.18 07:52 [ ADDR : EDIT/ DEL : REPLY ]
  8. 이슬비

    좋은 강좌 잘 보고 공부하고 있습니다.
    다름이 아니라
    C 프로그래밍 시 그래픽에 대해 궁금한 것이 있어 올림니다.

    예전에 C 로 시물레이션 할 땐,
    graphics.h
    라는 헤더 파일을 이용해서 계산한 결과를 화면에
    그래픽으로 뿌려준 적이 있는데
    우분투에서도 같은 방법을 사용하나요?

    요즘 OS를 우분투로 갈아타면서 공부중에 있습니다.
    우분투에 C를 설치해서 다시 프로그램 공부를 할려고 하는데,
    그곳에는 graphics.h라는 헤더파일이 깔려 있지 않더라구요.
    계산한 결과의 data를 화면에 뿌려주려면
    (여러가지 방법이 있을 것 같은데...)
    어떻게 해야 하는지 각각의 방법에 대해
    알려주시면 고맙겠습니다. ^^

    2015.02.23 23:47 [ ADDR : EDIT/ DEL : REPLY ]
    • graphics.h는 Turbo C 컴파일러의 자체 라이브러리의 헤더파일입니다. C언어표준 라이브러리가 아니로 기본적으로는 없습니다.
      graphics.h를 사용하고싶으시면 Turbo C컴파일러를 사용하시면 됩니다.

      2015.03.17 17:50 [ ADDR : EDIT/ DEL ]
  9. 프밍미미

    Psi님의 c언어 강좌를 오늘 모두 마쳤습니다~!! 매우 유익했어요. 정말 감사드립니다^^

    궁금한 것이 있는데요, c언어로 코딩 연습을 하고 싶은데 어떻게 해야 하나요?

    괜찮은 예제가 많이 실린 교재를 혹시 추천해주실 수 있나요?

    2015.05.19 20:24 [ ADDR : EDIT/ DEL : REPLY ]
  10. 다음엔 c++도 pdf 파일로 만들어 주세요.
    응원 하겠습니다.

    2015.09.28 07:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
  11. 1233

    여기다 질문해도 될지 모르겠는데... 질문이 하나 있는데요

    제가 비주얼 스튜디오 2013을 설치해서 c언어공부하려고하는데

    소스 다 짠뒤에 컨트롤+f5 누르면 cmd창 뜨면서 글씨 쭉 나오잖아요..

    근데 아무런 글씨도 안나오고 그냥 cmd창만 뜨네요... 어떻게 해결해야하나요 ㅠㅠ

    2015.12.14 18:08 [ ADDR : EDIT/ DEL : REPLY ]
  12. 지원

    안녕하세요~~~
    2016년 저도 우선 완주를 했습니다!!!
    감사합니다 ㅋㅋ
    완주하긴 했지만 예전 내용이 잘 기억이 안나기도 하고
    마지막에는 조금 느슨하게 한것 같아
    스스로 부족하다 생각하지만
    그래도 우선 완주했다는 것에 자축하고 싶네요!!
    그래고 너무너무 감사하다는 말을 하고 싶기도 하고요!!
    감사합니다!!

    2016.01.11 20:23 [ ADDR : EDIT/ DEL : REPLY ]
  13. 감사합니다

    이런 댓글은 처음 올리는 것 같은데 너무 잘보고 많이 배워가요~~ 감사합니다 ~~!!^^

    2016.06.28 00:06 [ ADDR : EDIT/ DEL : REPLY ]
  14. 다니

    c++ 공부하려 들어왔다가 c부터 공부해야된다는 Psi님의 글을 읽고 C부터 강좌를 차근 차근 이제 끝냈네요. ㅎㅎ
    처음엔 까만 콘솔화면 보면서 너무나 익숙하지 않았던 기억이 나네요. ㅋㅋ
    마지막으로 도서관 프로그래밍을 마치며, 그 익숙하지 않았던 까만화면이 그럴듯하게 작동하는 모습을 보니
    너무나 뿌듯합니다!!
    이렇게나 친절하고 자세한 C언어 강좌를 끝까지 진행해주셔서 너무나 감사드립니다.
    제 개발의 기초가 되는 강좌였으며 너무나 재미있게 공부했습니다!!
    그럼 이제 C++를 공부하러 가볼까합니다!! 정말!!! 감사합니다.

    2016.07.18 17:42 [ ADDR : EDIT/ DEL : REPLY ]
  15. 0000

    감사합니다 잘보고있습니다. 리눅스와 윈도우의c언어는 다른가요?

    2016.07.31 20:57 [ ADDR : EDIT/ DEL : REPLY ]
  16. Ama아재

    처음 알게 된게 2~3년즈음 되었었습니다.
    이것저것 찾아보고 책도 보고 다른 강좌도 읽어보면서 접하였었는데
    그동안 손놓고 있다가 다시 초심부터 시작 하자는 마음에 다시 찾게 되었습니다.
    C++를 통한 영상처리가 목표입니다. C부터 다시 정독하면서 읽었습니다
    감사합니다 이말 전하고 싶었습니다.
    C++도 정주행하고 열심히 노력 하도록 하겠습니다.

    2017.01.05 13:50 [ ADDR : EDIT/ DEL : REPLY ]
  17. C언어 나도 정복해보자!!

    여러가지의 C언어 책과 인터넷 강의들을 보았지만... 정말 이곳 만큼 설명이 잘 되어있고 꾸준히 올려주신 분은 Psi님 밖에
    없다고 생각이 듭니다..ㅠㅠㅠㅠ C를 너무 마스터 하고 싶었는데 덕분에 정말 많은 부분을 알수있었습니다!!
    이런 노력이 담긴 강좌를 작성해 주셔서 감사드려요! 2012년도에 마지막으로 작성하셨지만 현재 2017년에도
    최고의 강좌인 것 같습니다!! 앞으로도 그럴것이고요ㅎㅎ 책 내시면 한권 사야겠어요ㅋㅋㅋ 앞으로도 C뿐만아니라 C++등
    다른언어도 공부하러 자주 들리겠습니다~ 감사합니다!

    2017.01.12 00:06 [ ADDR : EDIT/ DEL : REPLY ]
  18. 학생

    컴퓨터과학 이중 전공을 계획한 컴퓨터과학 초년생입니다ㅋㅋ 한국에서 자바, 파이선만 쓰다가 교환학생으로 중국에 파견되니 냅다 C언어로 과제를 해올것을 요구해서 많이 당황했는데, 이틀에 걸쳐 정독하고나니 과제에 손대볼 수 있겠다는 자신감이 생겼어요. 감사합니다ㅋㅋ 이제 과제하러 갑니다..

    2017.03.13 20:47 [ ADDR : EDIT/ DEL : REPLY ]
  19. 예스맨

    명작은 역시 세월이 지나도 명작...! 작성한지 오래 지난 글임에도 불구하고 어디하나 지적할 곳 없는 이해하기 쉬운 입문 강좌인거 같습니다...
    옛날 한창 연재중이실 때, 웹서핑중에 그냥 지나쳤는데 이제서야 갑자기, 업무상 프로그래밍을 공부할 필요성이 생겨서 과거의 기억을 되짚어 다시 블로그 방문하게 되었습니다.
    혹시나 블로그를 닫거나 하시지 않았을까 걱정했지만 완결까지 하셨네요!
    좋은 강좌 감사합니다~!

    2017.06.15 21:15 [ ADDR : EDIT/ DEL : REPLY ]
  20. 열심히 배우겠습니다.

    강의 좋다고 소문듣고 왔는데요. 잘 배워보겠습니다. 감사합니다.

    2017.08.05 19:18 [ ADDR : EDIT/ DEL : REPLY ]
  21. 1234

    이 블로그를 보고 c언어를 독학해야겠다고 마음 먹었습니다.
    그래서 나름 저만의 코드도 짜보고 있는데, visual studio 에서 디버깅이 되질 않아요.
    계속 "~파일은 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. " 라고 뜹니다.
    이 블로그에 나와있는 설정대로 해보았는데 왜 그런걸까요?>

    2017.09.15 11:34 [ ADDR : EDIT/ DEL : REPLY ]