fwrite, fread, fgets. 이 셋의 공통점은 무엇일까요? 링크의 설명에서 보면, 공통적으로 stream 이라는 것이 들어가 있어요. 아. 듣기만 해도 어려워 보입니다. 그리고 stream에 대해서, 공식 문서의 io library에 대한 링크를 보면, 아래와 같은 문구가 있다는 것을 알 수 있습니다. 쉽지 않아 보이는군요. 차근 차근 생각해 봅시다. 우리가 scanf 함수로, "abcde" 라는 것을 입력받았다고 해 봅시다. 그러면, 키보드로부터 받은 "abcde"를 프로그램 A에다가 넘겨줄 겁니다. 그러면 keyboard에서 A로 흘러갔다는 게 조금 와 닿나요? 반대로, "chogahui"를 FILE B에다가 쓴다고 해 봅시다. 그러면 어떻게 해야 하나요? "chogahui"가 A에서 fi..
코딩/C 검색 결과
안녕하세요. 포인터에 대해 다 끝났으니, 파일을 가지고 천천히 놀아보도록 하겠습니다. 이 포스팅에서는 파일을 잘 여는 방법만 익히시면 됩니다. file_name과, mode를 넘겨주면, FILE 구조체의 포인터를 리턴합니다. 그러면 파일을 열고, 그것을 스트림과 연관을 시킨다고 링크에서는 설명을 하고 있습니다. 스트림, 버퍼. 벌써부터 어질어질해 집니다. 이에 대한 것들은 후에, 작성하도록 하겠습니다. 리턴을 하는 게 FILE 포인터인데요. 만약에 파일을 여는 것을 실패했다면, NULL 포인터를 리턴합니다. 이 처리를 잘 해주시면 좋을 듯 싶습니다. 열지도 못했는데 내용을 읽지는 못할 거니까요. 일단, 이 포스팅에서는 3개만 알고 계시면 됩니다. 그리고 뒤에 +가 붙는 경우가 있어요. 추가로 binary..
저번 시간에 함수 포인터에 대해서 언급을 했고, clockwise 해석법에 대해서도 간단하게 언급을 했으니, 다소 복잡한 것을 해석해 보도록 하겠습니다. C언어에는 signal 함수가 있는데요. 이것의 선언부만 간단하게 해석해 보도록 하겠습니다. 간단해 보이진 않지만요. 사실 원래는, void (*signal(int,void (*)(int)))(int); 입니다. 먼저, keyword를 찾아봅시다. signal입니다. 그리고 큰 덩어리 하나 찾아봅시다. signal에서 시계 방향으로 돌기 시작했을 때 맨 먼저 만나는 '('과 쌍을 이루는 ')'을 찾아서, 표시를 해 주었는데요. 이 부분은 안쪽에서 해석을 해 보도록 하겠습니다. 먼저, keyword인 signal에서, 오른쪽을 먼저 보니까 ()이 보였습니..
포인터를 배우시면, 가장 머리가 아픈 부분이 함수 포인터일 겁니다. 교재에서는 아마 signal이랑, qsort를 예제로 많이 들 거에요. 사실 signal은 잘 안 쓰지만요. qsort는 비교체를 넘겨줄 때 함수 포인터를 넘겨주고요. 그런데, 이것이 대체 무엇을 하는 것일까요? 어떻게 실행되는지, 자세하게 분석을 하는 것은 아마도, 어셈블리랑 같이 하면서 이야기를 할 듯 싶어요. 오늘은 예제 코드만 간단하게 이해해 보도록 하겠습니다. 17줄짜리 프로그램입니다. func라는 변수를 선언했는데요. 이것이 무엇인지만 안다면, 끝난다고 보셔도 될 듯 싶습니다. 먼저, 6번째 줄에서, void (*func)() = foo; 라고 되어 있습니다. 선언부만 잘 보시면 되는데요. 시계 방향으로 해석하겠습니다. 먼저 ..
아마, 이 글이 올라갈 시점에는, 저는 부산의 해운대에 가 있을 듯 싶습니다. 이 글은 예약글이기 때문입니다. 오늘은 잠깐 전역변수에 대해서 간단하게 다뤄보겠습니다. 사실, 별로 안 좋다고 언급하긴 합니다만, ps를 하면, 안 쓸 수는 없는 친구입니다. 그걸 안 쓰면, 매개변수를 더 넘겨주고, 귀찮은 처리 몇 번 더 해야 하기 때문입니다. 예제 프로그램을 보도록 하겠습니다. 먼저 a는 main 함수 바깥에 선언되어 있습니다. 이 a는 어디에서든 접근할 수 있어요. 그리고 f와 g를 main 함수에서 호출한 다음에, a 값을 출력합니다. 이 때, a 값은 전역 변수 a 값입니다. f와 g 함수는 위와 같습니다. f에는 a를 선언하지는 않았습니다. 그런데 g에는 매개변수로 a를 넘겼습니다. 그리고 19번째 ..
최근댓글