- 0x0000007b
- 2차세계대전
- 3.20해킹
- 4대강
- 502 error
- 53빌딩
- 7840hs
- 88체육관 수영장
- ABI
- abortive close
- abortive shutdown
- AHCI
- akmods
- ALC1220
- alma linux
- alternatives
- AM4 메인보드
- AMD
- amd 7840hs
- amd 그래픽 게임용
- amd 내장 그래픽 최적화
- anonymous file
- API
- apple.com
- APT
- apt-get
- Armagnac
- Asrock
- ASTALIFT
- audacious player
- Today / Yesterday
- /
- Total
목록컴퓨터 관련/C언어 (7)
Linux Programmer
예전에 C언어를 잘못 배우는 사람들이 많아서 쓰게 된 "C언어 공부법과 추천"글의 후속으로, 구체적으로 어떤 내용들이 잘못 알려졌는지를 다뤄 볼 것이다. 이 내용들은 좋지 않은 C언어 서적들이나 인터넷에서 돌아다니는 강좌들에 반복적으로 나타나는 오류이다. 사실 알고보면 인터넷에 잘못된 오류를 쓴 사람들은 원래 잘못된 책으로 공부한 뒤에, 그 지식들을 정리한 뒤에 글을 쓰기 때문에 책으로부터 퍼지는 것과 다를바가 없다. 최근에는 많이 줄었지만 fflush(stdin) 같은 UB(undefined behavior)는 너무 흔하게 나타나서 C언어를 배운 사람중에 거의 대다수가 fflush(stdin)을 쓸 정도였다. 심지어 많은 C언어 책에도 fflush(stdin)을 마구잡이로 썼었다. ㅠㅠ 그래서 본인은 ..
C언어 공부법과 책추천 마지막 수정일 : 2020-11-16 처음 쓴 날짜 : 2015-01-15 이 글은 C언어를 공부할 때 헤메지 않고 국제 표준인 정종(正種) C언어를 배우는데 도움을 주고자 쓰여졌다. 그러기 위해 알아야 하는 용어나 기반지식들을 살펴보고, 추천 도서인 KNK, K&R에 대해 소개하겠다. 참고로 여기에서 제시하는 방향이나 책이 올바르고 유일한 진리의 길은 아니다. 이 길은 개인적이고 주관적인 견해가 포함되어있으니 감안하고 보길 바란다 2015년을 기준으로 할때, 현대 컴퓨팅 환경에서 C언어의 위치는 거의 바닥에 존재하는 기초 언어이다. 따라서 C언어 뒤에 등장한 프로그래밍 언어들은 C언어의 문법체계를 따라했을 정도로 큰 족적을 남기기도 했다. 또한 운영체제(Operating syst..
실무에서 쓰이지 않지만 시험에서만 출제되는 C언어 시험 문제의 세계를 고발(?)하고자 한다. 고발이라고 하면 좀 자극적이긴 하지만 사실 특별한 내용은 아니다. 대부분 C언어 하시는 분들은 예전부터 생각해온 것일지도... 사실 요새 몇몇 기관의 시험문제를 출제, 감수 하면서 현실과 동떨어진 시험의 세계를 느낀 후 적는 글이다. 어떤 시험을 출제하느냐고 묻지는 말았으면 한다. 보안서약상 구체적인 기관이나 정보를 이야기할 수는 없다. 시험 문제 출제를 할 때면 출제를 요구하는 기관에서 과목, 출제 목표, 세부사항 등을 일일히 정해준다. 따라서 누가 문제를 내든지 비슷한 형태가 나올 수 밖에 없다. 예를 들면 다음과 같은 요구 사항이 있다고 치자. 과목 대분류 소분류 세부 사항/출제 목표 C언어 예약어 연산자 ..
벌써 몇 년이 지난 이야기다. 교육을 받던 분이 굳이 C언어를 배워야 할 필요가 있냐고 물어보셨다. 그에 대한 개인적인 생각을 적어보도록 하겠다.(이 글은 컴관련 전공자에 한하여 유효한 이야기이다. 비전공자라면 굳이 꼭 C언어를 배울 필요는 없다. 물론 개인적인 공부 방향이 컴관련 하부구조이거나 혹은 나중에 컴관련 대학원을 진학하려면 C언어 공부는 필수다.) 1. 체계화된 프로그래밍 순서를 익힐 수 있다. 모든 프로그래밍은 기본적으로 연산에 필요한 데이터를 메모리에 적재(load)하고 일련의 계산 결과를 저장(store)하게 된다. 이 후에 결과 데이터를 특정 위치로 전송하거나 복제하기도 한다. 이런 기본적인 계산 단위가 논리적으로 분기되고 복합적으로 연결된 것이 바로 프로그래밍이 되겠다. 그러나 가장 ..
* 주의: 여기서 설명하는 getline은 C++의 getline 메소드와는 다른 것입니다. 혼동하지 마시기 바랍니다. fscanf는 기본적인 입력 받는 함수로 모든 C언어 기초 책에서 소개되고 있지만 개행 문자(new line)나 공백 처리에 곤란한 부분이 있어서 실무환경에서는 fgets + sscanf 로 대체하여 사용하는 편이다. 하지만 scanf는 여전히 형식화된(formatted) 데이터, 즉 숫자나 문자, 공백으로 띄워진 문자열들을 처리할 때는 편리하다는 장점도 있다. 그렇다고해서 scanf의 여러가지 문제점이 완전 해결되는 것은 아니지만!! * scanf의 문제점 scanf("%c", ...) 로 읽는 경우에는 개행 문자를 사용자 입력으로 처리하기 때문에 문자 입력 후 엔터를 치면 다음번 s..
이 글은 2008년도에 개정된 POSIX.1-2008 표준에 추가된 함수, dprintf에 대해 소개하는 글입니다. TOC 1. 형식화된 입출력에서 printf 란? 2. printf와 고수준 파일 처리 3. 새로운 형식화된 출력 dprintf 4. 결론 과거 타자기부터 컴퓨터까지 수 많은 발전 중에 가장 중요한 것중에 하나는 데이터를 정확하고 멋드러지게 출력하는 것이었다. 그러다보니 프로그래밍에서 빠질 없는 것이 바로 형식화된 입출력(Formatted Input/Output)이다. (형식화된 입출력이란 데이터의 형태를 변환하여 읽거나 출력하는 것으로 로케일 변환, 자릿수 맞춤, 들여쓰기(tab) 등등의 기능을 말한다.) 1. 형식화된 입출력에서 printf 란? 형식화된 입출력에서 printf는 출력 ..
* 이 글은 C언어 시스템 프로그램에서 주로 사용되는 reentrant(재진입성) 함수와 멀티쓰레드 안전(Multi-threads-safety)의 차이와 기능에 대해서 알아보는 글입니다. (참고: "멀티쓰레드 안전"은 매뉴얼 표기시 MT-safe, MT-safety, Thread-safe라고 표기합니다.)우선 책에는 애매모호하게 짧게 적어놔서 문의 메일을 여러 차례 받았습니다. 매번 같은 내용을 설명하는 것도 힘들고, 자세히 설명드리지도 못해 죄송한 마음에 미리 적어두고 해당 링크만 참조시켜드릴 요령으로 작성하게 되었습니다.더보기[책의 원문]* 원자성과 쓰레드 - 안전, 재진입성에 대해서원자성(atomicity)이 보장되는 코드(or 함수)는 일단 해당 코드 부분이 시작하면, 종료되기 전에는 다른 코드 ..