사실, 저는 백준을 풀 때 define 문을 상수 정의할 때 빼고는 써 본 적이 없었습니다. 실무에서는 어떻게 쓸 지는 잘 모르겠지만요. 상수 정의할 때도 가끔씩 써서, 그리 많이 쓴 적은 없습니다. 물론, C언어 시험 볼 때에는 많이 썼겠지만요. 보통 넓이를 구하는 것은 define이 아니라, 함수로 쓰는 편입니다. 이것은, 배보다 배꼽이 더 커지기 때문에 그렇기도 합니다. 백준을 한참 할 때, 많이 본 질문 글 중 하나는 이것을 잘못 써서 맞았는데 왜 틀려요? 하는 경우였습니다. 전처리기에 대한 이야기는 나중에 정리할 때 한꺼번에 언급하기로 하고요. 오늘은 그냥 간단하게 개론만 보도록 하겠습니다. 먼저 상수 정의할 때에는 요긴하게 쓰입니다. 이것은 제가 세그 트리를 구축할 때, (1
코딩/C 검색 결과
fwrite는 어떤 일을 하는 함수일까요? block의 데이터를 stream에 쓰는 함수입니다. 함수 원형은 아래와 같습니다. 1번째 인자인 ptr은 쓸 데이터를 의미합니다. void형 포인터인게 눈에 띄는데요. 써야 할 데이터가 moo를 가리키는 포인터인지, student를 가리키는 포인터인지 모르거든요. 2번째 인자인 size는 몇 byte를 쓸 거냐를 나타냅니다. count는 몇 번이나 쓸 지를, 4번째는 파일 포인터를 의미합니다. 예제를 보면서 차근 차근 설명해 보도록 하겠습니다. 프로그램 1을 보겠습니다. 이걸 보기 전에, 1.txt를 먼저 생성해 보겠습니다. 일단 1.txt는 빈 파일입니다. 이는 ls 명령어를 통해서 봐도 알 수 있고, cat 1.txt | wc 명령어를 입력해도 알 수 있습..
이번 시간에는 c언어 fread 함수를 먼저 알아보도록 하겠습니다. 사용법이 다소 복잡해 보입니다. ptr은 파일에서 읽어온 것을 저장할 block을 가리키는 포인터입니다. 다음에, size는 block의 사이즈, count는 갯수를 의미합니다. 만약에, size개의 크기를 count개만큼 읽어오겠다고 한다면, 읽어온 총 byte 수는 size에 count를 곱한 값입니다. 파일 지시자가 가리키는 위치로부터 size에 count를 곱한 byte만큼 주루룩 읽어오는 함수가 fread인 셈입니다. 먼저 1.txt에 다음과 같은 내용을 저장하였습니다. fw 프로그램은, fwrite 함수를 이용해서 moo형 레코드를 하나 하나씩 1.txt라는 파일에 썼습니다. 1.txt에는 다음과 같은 내용이 저장이 되어 있는..
이번 시간에는 c언어 fseek 함수를 배워보도록 하겠습니다. 이 함수는, 간단하게 요약하면 파일의 임의 위치에 접근하게 해 주는 함수입니다. 당연하게도, 탐색할 수 없는 파일이면, 이 함수를 호출하는 것이 무용지물일 거에요. 먼저, 0123456789라는 내용을 적은 input.txt를 생성해 보겠습니다. cat input.txt를 하면, 0123456789가 출력이 될 겁니다. 같은 디렉토리에 있는 실행파일 fs는 input.txt의 내용을 읽고 쓰는 함수입니다. input.txt가 존재하기 떄문에, 파일을 여는 연산은 성공해야 할 듯 싶습니다. 그런데 보기 좋게 fail이 뜹니다. 뭐가 문제일까요? 파일이 분명 있는데. 의심해 볼 만한 것 중에는 권한이 있습니다. 어떠한 User로 로그인이 되어 있..
rewind 함수에 대해 알아보겠습니다. 이것은 stream의 파일 위치 지시자를 시작 위치로 옮기는 함수입니다. 별 게 없어 보입니다. 사실 이는, 다음과 같습니다. 다만, error 지시자가 초기화가 되고 안 되고는 다릅니다. 이는 링크에서 except that the error 구문을 해석하시면 알 수 있습니다. 이제 예제를 몇 개 보도록 하겠습니다. 먼저 아래 예제를 보도록 하겠습니다. 문자열을 입력받고, 입력 버퍼를 초기화 하기 위해서, rewind(stdin); 을 호출해 주었습니다. 다음에 문자 하나를 입력받습니다. 의도대로 동작했을까요? chogahui를 입력하고 엔터를 입력했습니다. 프로그램의 의도는, 다음에 소문자를 입력받는 것이였습니다. 그런데, 엉뚱한 문자인 개행 문자를 입력 받았습..
최근댓글