다시 오신 걸 환영해요
이번 강의에서는 이전 과제의 데모를 보여드리겠습니다
파일의 콘텐츠를 역순으로 프린트하는 거죠
Ftel 방식과 씬 방식을 이해해야 해요
코드 블록을 불러오고 새 프로젝트를 생성하죠
이 프로젝트는 콘솔 응용 프로그램이 될 거예요
이름을 거꾸로
파일 콘텐츠 프린트라고
할게요
먼저 파일을 생성하겠습니다 그 안에 빈 데이터가
있죠 그걸 읽어야 하니까요 다운로드 디렉터리로 돌아가겠습니다 프로젝트
코드블록들이 있는 곳이죠
방금 생성한 프로젝트로
가보겠습니다
프린트 파일 콘텐츠라는 이름이죠
바로 여기예요 새 파일을 만들겠습니다 텍스트 파일요
새 텍스트 문서라고 하죠 이름은 테스트라고 하죠 문자요
그리고 이 안에, 일반적인 hi를 쓸게요.
제 이름은 Jason입니다.
저는 잘 지내죠.
이게 뭘 할 거냐면 저장할게요 그런 다음 끝부분을 프린트하죠
그래서 시작 부분까지 이니프 자장 등등을 프린트해야 해요
코드 블록으로 돌아가죠 표준 IO도
포함해야 합니다 모든 함수를 포함하고
있으니까요 상수를 생성할 거예요
이 경우엔 정의죠
파일 네임으로 불리고 test로 불릴 거예요 문자요
먼저 파일 포인터를 만들어야 해요 모두 대문자로 FILE
*fp 이걸 null로 설정하고 초기화하죠
그런 다음 두어 개의 카운터와 돌아온 것을
나타내는 뭔가를 생성하겠습니다 counter를 루프로
가져갈게요 실제 바이트의 개수는
ftell이 나타냈어요
count = 0이라고 입력하면
루프 제어 변수가 I = 0이 되죠
평소대로 할 거예요 제 파일을 열어야 해요 fp = fopen이라고
하고 파일 이름을 넘기죠 읽기 전용만 입력할게요 그냥 r만요
이게 null이 아닌지 확인할게요 그럼 fp가 null이면 1을
반환하라고 할게요
안 그러면 이 파일을 끝까지 파헤칠 거예요
그래서 씬을 하고 싶어요
여기서 시크 기능을 부를게요
제가 가리키는 위치의 위치가 바뀔 거예요 파일 포인터를 전달할 거예요
두 번째 매개 변수는 0으로 할게요
세 번째 매개 변수는 끝까지 찾기예요
그래서 저는 끝을 찾는 방법을 계속 사용할 거예요.
그게 파일 포인터를 fp 끝에 설정합니다
테스트요 문자요
끝에 다다르면 Ftell을 가리키는 것에 대한 실제 counter를
설정하고 싶어요 그래서 예전으로 돌아가고 싶어요
이제 파일 포인터의 위치를 볼게요.
시크가 위치를 바꿔 파일
포인터를 파일 끝으로 이동시키죠
제가 먼저 움직여서 위치를 잡을게요 Ftell을 이용해 그 자리를 얻을 수 있어요
ftell을 위해 위치를 반환하죠 그래서 count에 저장될
거예요 f count = f tell라고 입력하고 파일 포인터에 전달하죠
일단 위치를 정하면 while 루프를 작성할 수 있습니다
그 위치에서 counter로 가라고 하는 거죠 루프 컨트롤 변수를 끝까지요
whileI=Count라고 할 수 있죠
처음부터 끝까지 모든 걸 읽고 싶으니까요
이 안에서 I 변수를 증가하라고 하고 싶어요
그리고 어디로 이사할지 찾고 바꾸고 싶어요 프시크라고 하고 fp를
가리키고 싶어요
마이너스 I를 가리키고 싶어요 왜냐하면
뒤에서 시작으로 가서 끝을 찾으라고 말하고 싶거든요
마이너스 I는 마지막에 여러 바이트가 될 거예요
먼저 끝으로 이동한 다음 위치를
바꿔서 각 캐릭터를 읽기 시작할게요
일단 끝까지 가면 캐릭터를 프린트할 수 있어요
캐릭터를 읽고 프린트하죠
%
c라고 입력하고 fgetc라고 입력하고 파일
포인터를 입력할게요
다시 한 번, 22번째 줄이나 19번째 줄에서 포인터를
끝으로 옮기고 있어요
그런 다음 counter가 나오는데요 Ftell을 이용해 각 바이트를 얼마나 읽어야
하는지 알려주는 거죠
while 루프는 0부터 시작해서 몇
바이트를 입력할지 결정해요
26번째 줄에서 counter를 증가시킬 거예요
마지막에서 아주 많은 바이트를 탐색할 겁니다
마지막에서 I를 빼는 거죠 그리고 28번째 줄을 읽어서 출력할 거예요
그게 이 프로그램의 주요 논리죠
제가 해야 할 다른 일은 마지막에 라인 피드를 프린트하는
겁니다 읽기가 더 쉽게요 파일 포인터를 닫고 싶어요
fp라고 하고 반환하고 싶어요 fp
= null로 설정해야죠
이제 컴파일을 해 봅시다. 파일 프린트를
반대 순서로 해 볼게요.
파일의 내용을 바꾸지 않고
위치 함수를 이용해 처음부터 끝까지 읽기만 하는 거죠
이걸 실행하면 반대나 역순이
보일 거예요 보다시피 역순으로 돼 있죠
먼저 마지막 파일을 프린트하고 있어요
다운로드 디렉터리에 해당 파일을
불러오면 출력된
게 보이시죠
이니프 양수막
같은 걸 출력하죠
마지막 줄은 안녕, 내 이름은 제이슨이에요 거꾸로 하면요
작지만 깔끔한 프로그램이죠 파일
포인터를 사용해 맨 끝으로 갔다가 맨 처음으로
가서 반대 순서로 내용을 프린트해요
프시크를 어떻게 사용하는지 Ftell을 어떻게 사용하는지 보세요
프시크는 파일 포인터를 이동하고 FTell은 파일
위치에서 당신의 위치를 파악하죠
count를 이용해서 반대로 할 수 있어요.
I를 사용해 몇 바이트인지 명시하고 fgetc 파일
포인터를 사용해요
이 소스 코드를 솔루션으로 제공할 테니 비교해 보고 보다
상세히 분석해 보세요 도움이 됐으면 좋겠네요 고마워요