1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> 스피커 : 지금까지, 그것은 가능성이 높습니다 프로그램의 대부분이 3 00:00:07,870 --> 00:00:10,170 조금 임시왔다. 4 00:00:10,170 --> 00:00:13,310 당신은 마리오이나 욕심 같은 프로그램을 실행합니다. 5 00:00:13,310 --> 00:00:17,350 그것은 어쩌면하라는 메시지를, 무언가를 일부 정보는 사용자, 6 00:00:17,350 --> 00:00:20,400 화면에 약간의 출력을 인쇄, 그러나 다음 프로그램은 이상 때 7 00:00:20,400 --> 00:00:23,252 이 증거는 정말 없다 그것은 이제까지 처음에 실행되었습니다. 8 00:00:23,252 --> 00:00:25,960 나는 확실히 당신이 왼쪽 수도, 의미 그것은, 터미널 창에서 열립니다 9 00:00:25,960 --> 00:00:29,770 당신은 당신의 화면을 취소하는 경우 그러나, 거기에 그것이 존재 정말 증거합니다. 10 00:00:29,770 --> 00:00:33,720 우리는 저장 수단을 갖고 있지 않은 지속적인 정보, 11 00:00:33,720 --> 00:00:36,890 그것은 우리 후 존재 프로그램 실행이 중지되었습니다, 12 00:00:36,890 --> 00:00:39,241 또는 우리는이 시점까지하지 않았습니다. 13 00:00:39,241 --> 00:00:41,490 다행히도하지만, C는 않습니다 수있는 능력을 우리에게 제공 14 00:00:41,490 --> 00:00:44,220 구현하여이 작업을 수행하는 무엇인가라는 15 00:00:44,220 --> 00:00:48,330 파일 구조가 기본적으로 당신은 두 번 할 파일을 나타냅니다 16 00:00:48,330 --> 00:00:53,826 당신이 있다면, 당신의 컴퓨터를 클릭 그래픽 사용자 환경에 사용된다. 17 00:00:53,826 --> 00:00:55,700 일반적으로 작업을 할 때 C로, 우리는 실제로있어 18 00:00:55,700 --> 00:00:59,965 작업 할 것 포인터는 파일을 files--합니다 .2 명의 스타 19 00:00:59,965 --> 00:01:02,090 조금 제외 우리는 몇 가지에 대해 이야기 할 때 20 00:01:02,090 --> 00:01:04,560 기능의 파일 포인터와 함께 작동합니다. 21 00:01:04,560 --> 00:01:08,990 당신은 정말 파고있다 할 필요가 없습니다 이해 포인터에 너무 깊이 22 00:01:08,990 --> 00:01:09,730 자신. 23 00:01:09,730 --> 00:01:12,870 작은 조그마한 비트가있다 우리가 그들에 대해 이야기 곳, 24 00:01:12,870 --> 00:01:18,090 그러나 일반적으로 포인터를 제출하고 포인터, 상호 동안, 25 00:01:18,090 --> 00:01:20,290 정확히 같은 것이 아니다. 26 00:01:20,290 --> 00:01:22,440 >> 지금은 때 무엇을 의미합니까 나는 영구 데이터를 말한다? 27 00:01:22,440 --> 00:01:23,650 영구 데이터는 무엇입니까? 28 00:01:23,650 --> 00:01:25,232 우리는 그것에 대해 왜 상관이야? 29 00:01:25,232 --> 00:01:27,190 것으로, 예를 들면, 말 당신은 프로그램을 실행하는 30 00:01:27,190 --> 00:01:29,850 또는 당신이 다시 한 게임의 프로그램, 31 00:01:29,850 --> 00:01:32,960 당신은 트랙을 유지하려면 사용자의 움직임의 모든 32 00:01:32,960 --> 00:01:36,620 그래서 뭔가 잘못 어쩌면 경우, 당신은 게임 후 파일을 검토 할 수 있습니다. 33 00:01:36,620 --> 00:01:39,970 그 때 우리가 무엇을 의미하는지에 관해이다 영구 데이터에 대해 이야기. 34 00:01:39,970 --> 00:01:43,930 >> 실행 과정에서 당신의 프로그램은 파일이 만들어집니다. 35 00:01:43,930 --> 00:01:45,680 그리고 때 프로그램 실행 중지, 36 00:01:45,680 --> 00:01:48,689 해당 파일은 여전히​​ 시스템에 존재합니다. 37 00:01:48,689 --> 00:01:50,230 그리고 우리는 그것을보고를 검사 할 수 있습니다. 38 00:01:50,230 --> 00:01:53,670 그리고 그 프로그램은로 설정됩니다 일부 영구 데이터를 만들었습니다, 39 00:01:53,670 --> 00:01:57,390 데이터는 프로그램 후 존재 실행이 완료. 40 00:01:57,390 --> 00:02:02,320 >> 이제 작업이 모든 기능 파일을 생성하고 조작과 41 00:02:02,320 --> 00:02:04,940 를 다양한 방식으로 표준 io.h에 살고, 42 00:02:04,940 --> 00:02:08,210 이는 헤더 파일입니다 당신은 가능성이 파운드 봤는데 43 00:02:08,210 --> 00:02:10,910 꽤 상단에 포함 프로그램의 많은 모든 44 00:02:10,910 --> 00:02:14,130 이 중 하나를 포함하고 있기 때문에 우리에게 가장 유용한 기능, 45 00:02:14,130 --> 00:02:16,130 또한 수의 printf, 표준 io.h.에 살고 46 00:02:16,130 --> 00:02:20,400 그래서 당신은 포함 파운드 할 필요가 없습니다 추가 파일 아마 47 00:02:20,400 --> 00:02:23,540 위해 파일 포인터와 함께 작동합니다. 48 00:02:23,540 --> 00:02:29,980 >> 이제 모든 단일 파일 포인터 기능, 또는 매 파일 I / O, 입출력 49 00:02:29,980 --> 00:02:33,310 함수는, 하나로서 받아 들인다 매개 변수 또는 입력 50 00:02:33,310 --> 00:02:35,822 제외 파일 pointer-- 하나, fopen을, 어떤 51 00:02:35,822 --> 00:02:38,280 파일을 얻기 위해 사용하는 것입니다 처음에 포인터. 52 00:02:38,280 --> 00:02:41,010 하지만 연 후 파일과이 파일 포인터를 얻을, 53 00:02:41,010 --> 00:02:43,510 당신은 다음과 같이 전달할 수 있습니다 다양한 기능에 인수 54 00:02:43,510 --> 00:02:46,720 우리에 대해 이야기하는거야 오늘날,뿐만 아니라 많은 다른 55 00:02:46,720 --> 00:02:48,520 있도록 파일로 작업 할 수 있습니다. 56 00:02:48,520 --> 00:02:50,980 >> 그래서 여섯 꽤있다 공통 기본 것들 57 00:02:50,980 --> 00:02:52,870 우리는 오늘에 대해 이야기 할 거라고. 58 00:02:52,870 --> 00:02:57,160 하면 fopen과 그 동반자 기능 FCLOSE,는 fgetc 59 00:02:57,160 --> 00:03:02,670 그 동반자 함수 fputc, 그리고 FREAD과 동반자 기능, 60 00:03:02,670 --> 00:03:03,820 에 fwrite. 61 00:03:03,820 --> 00:03:05,180 그럼 바로 들어갈 수 있습니다. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- 어떤 역할을합니까? 63 00:03:07,050 --> 00:03:10,050 음, 파일을 열고 그것을 그것은 당신에게 파일 포인터를 제공, 64 00:03:10,050 --> 00:03:14,000 그래서 당신은 그 사용할 수있는 인자로 포인터를 파일 65 00:03:14,000 --> 00:03:16,730 다른 파일 I / O 기능을 어느. 66 00:03:16,730 --> 00:03:19,100 가장 중요한 것 fopen을 함께 기억 67 00:03:19,100 --> 00:03:24,222 당신이 연 것을 후 파일 또는 여기에 같은 전화를했다, 68 00:03:24,222 --> 00:03:26,930 당신은 확인하기 위해 확인해야 당신이 돌아 왔을 포인터 69 00:03:26,930 --> 00:03:28,320 null로 동일하지 않다. 70 00:03:28,320 --> 00:03:31,320 당신은 비디오로 시청하지 않은 경우 포인터,이 이해가되지 않을 수 있습니다. 71 00:03:31,320 --> 00:03:35,639 하지만 당신은 시도하고 역 참조하는 경우 널 포인터 리콜, 72 00:03:35,639 --> 00:03:38,180 프로그램은 아마 겪게됩니다 분할 [들림]. 73 00:03:38,180 --> 00:03:40,540 우리는 있는지 확인하려면 우리 합법적 인 포인터를 다시 얻었다. 74 00:03:40,540 --> 00:03:43,665 시간의 대부분 우리 것 다시 합법적 인 포인터를 입수했습니다 75 00:03:43,665 --> 00:03:45,280 그것은 문제가되지 않습니다. 76 00:03:45,280 --> 00:03:46,760 >> 그래서 우리는 어떻게 호출 fopen의 할 수 있을까요? 77 00:03:46,760 --> 00:03:48,051 그것은이 같은 꽤 많이 보인다. 78 00:03:48,051 --> 00:03:52,690 일반 인 ptr에 ptr-- 파일 스타 pointer--하면 fopen 파일 이름 79 00:03:52,690 --> 00:03:57,300 우리는 두 가지의 파일 이름을 전달 그리고 작업은 우리가 수행 할. 80 00:03:57,300 --> 00:04:01,690 그래서 우리는 보이는 전화를 할 수도 있습니다 이 항아리 파일 스타 PTR 1 fopen을 동일 81 00:04:01,690 --> 00:04:04,040 은 File2.txt. 82 00:04:04,040 --> 00:04:07,020 내가 선택한 작업은 R이다. 83 00:04:07,020 --> 00:04:08,639 >> 그래서 당신은 무엇을, R은 여기에있다 생각하십니까? 84 00:04:08,639 --> 00:04:11,180 물건의 종류 무엇 우리 파일을 할 수있을 것인가? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 따라서 R이 동작은 그 우리 우리가 파일을 읽을하고자 할 때 선택합니다. 87 00:04:17,500 --> 00:04:20,260 그래서 우리는 기본적으로 때 것 우리는이 같은 전화를 걸 88 00:04:20,260 --> 00:04:25,440 자신에게 파일 포인터를 받고있을 우리는 다음의 정보를 읽을 수 있도록 89 00:04:25,440 --> 00:04:27,770 은 File2.txt에서. 90 00:04:27,770 --> 00:04:34,190 >> 마찬가지로, 우리는 파일 2.txt을 열 수 있습니다 PTR2 쓰기 때문에 우리가 통과 할 수있다, 91 00:04:34,190 --> 00:04:38,210 내가 여기에 생성 한 파일 포인터, 어떤 함수에 인수로 그 92 00:04:38,210 --> 00:04:40,080 파일에 정보를 기록합니다. 93 00:04:40,080 --> 00:04:43,767 쓰기와 마찬가지로, 거기에 또한 옵션이 추가됩니다. 94 00:04:43,767 --> 00:04:45,600 차이점 쓰기 추가 95 00:04:45,600 --> 00:04:50,920 인 당신이 파일에 쓸 때, 당신은 쓰기 위해 fopen의로 전화를 걸 경우 96 00:04:50,920 --> 00:04:54,761 그 파일이 이미 그것의 존재 전체 파일을 덮어 쓸 것. 97 00:04:54,761 --> 00:04:56,510 그것은 시작하는거야 처음에, 98 00:04:56,510 --> 00:04:58,820 모든 정보를 삭제 즉, 이미있다. 99 00:04:58,820 --> 00:05:02,210 >> 당신이 추가 그것을 열면 반면, 파일의 마지막으로 이동한다 100 00:05:02,210 --> 00:05:04,340 이미 텍스트가 있다면 그것 또는 정보, 101 00:05:04,340 --> 00:05:06,040 그리고 그 다음에 시작됩니다 거기에서 작성. 102 00:05:06,040 --> 00:05:08,570 그래서 당신은 어떤을 잃지 않을 것 당신이 전에했던 정보. 103 00:05:08,570 --> 00:05:12,110 당신이 작성하거나 추가 할 것인지 종류의 상황에 따라 달라집니다. 104 00:05:12,110 --> 00:05:16,840 하지만 당신은 아마 무엇을 알 수 있습니다 때가되면 오른쪽 조작이다. 105 00:05:16,840 --> 00:05:18,020 그래서 fopen을합니다. 106 00:05:18,020 --> 00:05:18,930 >> 무엇 FCLOSE 어떻습니까? 107 00:05:18,930 --> 00:05:21,600 음, 아주 간단하게, FCLOSE 그냥 파일 포인터를 받아들입니다. 108 00:05:21,600 --> 00:05:24,000 그리고 예상대로, 그것은 그 파일을 닫습니다. 109 00:05:24,000 --> 00:05:29,270 우리가 파일을 닫은 후, 우리는 할 수 없습니다 더이상 파일 I / O 기능을 수행 110 00:05:29,270 --> 00:05:31,420 읽거나 해당 파일에 쓰기. 111 00:05:31,420 --> 00:05:36,444 우리는 다시 열 필요가 위해 다른 시간을 파일 112 00:05:36,444 --> 00:05:38,610 작업을 계속합니다 그것은 I / O 함수들을 사용. 113 00:05:38,610 --> 00:05:41,520 우리가 완료 그래서 FCLOSE 수단 이 파일로 작업. 114 00:05:41,520 --> 00:05:44,690 그리고 우리가 통과 할 필요가있다 파일 포인터의 이름. 115 00:05:44,690 --> 00:05:50,010 부부는 전에 슬라이드에 그래서, 우리 읽기 fopened 파일 1 점 텍스트 116 00:05:50,010 --> 00:05:52,854 우리는 할당 PTR1에 포인터를 파일. 117 00:05:52,854 --> 00:05:55,020 이제 우리는 우리가있어 결정했습니다 해당 파일에서 읽기 다. 118 00:05:55,020 --> 00:05:56,561 우리는 그것으로 더 이상 할 필요가 없습니다. 119 00:05:56,561 --> 00:05:58,890 우리는 단지 FCLOSE PTR1을 할 수 있습니다. 120 00:05:58,890 --> 00:06:01,950 그리고 마찬가지로, 우리는 할 수 다른 사람을 FCLOSE. 121 00:06:01,950 --> 00:06:02,450 괜찮아. 122 00:06:02,450 --> 00:06:03,700 그래서 열고 닫는입니다. 123 00:06:03,700 --> 00:06:05,780 이들은 두 염기성 작업을 시작. 124 00:06:05,780 --> 00:06:08,050 >> 이제 우리는 실제로 원하는 몇 가지 흥미로운 물건을, 125 00:06:08,050 --> 00:06:11,940 그리고 첫 번째 함수는 우리거야 즉 fgetc--하다 할 것 참조 126 00:06:11,940 --> 00:06:14,110 문자를 얻을 파일. 127 00:06:14,110 --> 00:06:17,350 즉, 일반적으로는 fgetc 무엇 번역 할 것이다. 128 00:06:17,350 --> 00:06:20,190 인생에서의 목표는이다 다음 문자를 읽고, 129 00:06:20,190 --> 00:06:22,079 또는이 당신의 아주 인 경우 는 fgetc에 첫 번째 호출 130 00:06:22,079 --> 00:06:23,870 특정 파일에 대해, 첫 번째 문자. 131 00:06:23,870 --> 00:06:26,210 그러나 그 후, 당신은 다음 하나를 얻을 132 00:06:26,210 --> 00:06:31,500 해당 파일의 바로 다음 문자, 문자 변수에 저장을. 133 00:06:31,500 --> 00:06:34,490 우리가 여기에서 수행 한 바와 같이, 숯불 채널은,는 fgetc와 동일 134 00:06:34,490 --> 00:06:36,389 파일 포인터의 이름으로 전달합니다. 135 00:06:36,389 --> 00:06:38,180 다시, 그것은 매우있어 기억 여기에 중요 136 00:06:38,180 --> 00:06:41,430 위해 것은이하는 것을 이 조작이 실패, 137 00:06:41,430 --> 00:06:45,690 파일 포인터 자체 한게 분명해 읽기 열렸다. 138 00:06:45,690 --> 00:06:50,589 우리는 파일에서 문자를 읽을 수 없습니다 우리가 쓰기 위해 열 포인터. 139 00:06:50,589 --> 00:06:52,630 그래서 그 중 하나 하면 fopen의 한계, 맞죠? 140 00:06:52,630 --> 00:06:55,470 우리는 제한해야 자신 만 수행하기 141 00:06:55,470 --> 00:06:57,710 하나의 파일 포인터를 하나의 작업. 142 00:06:57,710 --> 00:07:00,220 우리가 읽고 싶어하는 경우와 같은 파일에서 쓰기, 143 00:07:00,220 --> 00:07:03,840 우리는 열려있는 두 개의있을 것입니다 같은 file--에 파일 포인터 144 00:07:03,840 --> 00:07:05,670 독서를위한 하나, 쓰기 하나. 145 00:07:05,670 --> 00:07:08,400 >> 그래서 다시, 유일한 이유 나는 지금 그를 불러 146 00:07:08,400 --> 00:07:11,920 우리가 전화를 만들려고하는 경우 때문에 는 fgetc에 해당 파일 포인터 꺼리 147 00:07:11,920 --> 00:07:14,172 읽기 열렸다. 148 00:07:14,172 --> 00:07:15,880 그리고 아주 간단하게, 우리 모두가해야 할 149 00:07:15,880 --> 00:07:17,546 파일 포인터의 이름을 전달합니다. 150 00:07:17,546 --> 00:07:21,060 그래서 문자 채널이는 fgetc PTR1 같습니다. 151 00:07:21,060 --> 00:07:23,200 >> 즉 우리를 얻을 것 다음 character-- 152 00:07:23,200 --> 00:07:25,575 또는 다시 이것은 제이면 우리는이 전화를했습니다 시간, 153 00:07:25,575 --> 00:07:29,750 의 첫 번째 character-- 어떤 파일은 PTR1에 의해 지적되고있다. 154 00:07:29,750 --> 00:07:32,210 즉 파일 1 점 텍스트임을 기억하자. 155 00:07:32,210 --> 00:07:36,490 그것은 그것의 첫 번째 문자를 얻을 수 있습니다 우리는 변수 채널에 저장합니다. 156 00:07:36,490 --> 00:07:37,941 꽤 간단합니다. 157 00:07:37,941 --> 00:07:40,190 그래서 우리는 세 가지 검토 한 기능과 우리 이미 158 00:07:40,190 --> 00:07:43,070 멋지다 뭔가를 할 수 있습니다. 159 00:07:43,070 --> 00:07:46,320 >> 우리가이 능력을 가지고 있다면 문자를 점점 160 00:07:46,320 --> 00:07:48,943 우리는 루프 그래서 그건 ... 우리 문자가 계속 161 00:07:48,943 --> 00:07:51,390 파일의 이상과 이상과 끝났다, 이제 우리 162 00:07:51,390 --> 00:07:54,500 하나 하나를 읽을 수 있습니다 파일의 문자. 163 00:07:54,500 --> 00:07:58,670 그리고 우리는 모든 문자를 인쇄하면 우리는 그것을 읽을 직후, 164 00:07:58,670 --> 00:08:01,960 우리는 지금 파일에서 읽은과 화면에 그 내용을 인쇄했다. 165 00:08:01,960 --> 00:08:05,610 우리는 효과적으로 연결될 것 화면에 해당 파일. 166 00:08:05,610 --> 00:08:09,670 그리고 그 무엇 리눅스 명령 고양이는 않습니다. 167 00:08:09,670 --> 00:08:13,250 >> 파일 이름의 고양이를 입력하면, 그것을 전체 내용을 인쇄 할 168 00:08:13,250 --> 00:08:15,160 터미널 창에서 파일의. 169 00:08:15,160 --> 00:08:19,010 그리고 여기이 작은 루프, 코드의 세 줄, 170 00:08:19,010 --> 00:08:23,270 그러나 효과적으로 복제 리눅스 명령 고양이. 171 00:08:23,270 --> 00:08:25,210 따라서이 구문은 수도 조금 이상한 모양 172 00:08:25,210 --> 00:08:26,670 하지만 여기에 여기에 무슨 일이 일어나고 있는지입니다. 173 00:08:26,670 --> 00:08:31,460 채널이는 fgetc와 동일하지만, PTR은 아니다 그것은 전체 입의 EOF-- 같 174 00:08:31,460 --> 00:08:34,669 하지만 현실을 바로 분해하자 그래서 구문에 분명하다. 175 00:08:34,669 --> 00:08:37,169 나는 그것을 통합했습니다 공간을 위해, 176 00:08:37,169 --> 00:08:39,049 그것은 조금 비록 구문 까다로운. 177 00:08:39,049 --> 00:08:41,194 >> 그래서 녹색 바로이 부​​분 지금은 무엇을하고 있는가? 178 00:08:41,194 --> 00:08:42,860 글쎄, 그건 단지 우리는 fgetc 호출, 오른쪽입니까? 179 00:08:42,860 --> 00:08:44,530 우리는 이전 것을 보았다. 180 00:08:44,530 --> 00:08:49,500 그것은 하나를 얻는 것 파일에서 문자. 181 00:08:49,500 --> 00:08:53,220 그런 다음 우리는 비교 EOF에 대한 문자. 182 00:08:53,220 --> 00:08:57,470 EOF입니다 특수 값입니다 표준 io.h에 정의 된 183 00:08:57,470 --> 00:08:59,390 파일의 마지막 문자이다. 184 00:08:59,390 --> 00:09:03,450 그래서 기본적으로 무슨 일이 일어날 이 루프는 문자를 읽을 수있다, 185 00:09:03,450 --> 00:09:07,445 ,를를 끝까지 비교 파일 문자의 끝. 186 00:09:07,445 --> 00:09:10,070 일치하지 않으면, 우리는 가지고 있지 파일의 끝에 도달 187 00:09:10,070 --> 00:09:11,490 우리는 문자를 인쇄 할 수 있습니다. 188 00:09:11,490 --> 00:09:13,740 그 다음 우리는 다시 갈거야 다시 루프의 시작. 189 00:09:13,740 --> 00:09:18,310 우리는 문자를 얻을 것이다 확인 EOF에 대해, 그래서 그것을 밖으로 인쇄하고, 190 00:09:18,310 --> 00:09:21,094 등 등, 그런 식으로 통해 반복 191 00:09:21,094 --> 00:09:22,760 우리는 파일의 끝에 도달 할 때까지. 192 00:09:22,760 --> 00:09:24,593 그리고 그 점, 우리는 인쇄 한 것 193 00:09:24,593 --> 00:09:26,210 파일의 전체 내용 알아. 194 00:09:26,210 --> 00:09:29,450 그래서 다시, 우리는 보았다 하면 fopen, FCLOSE하고는 fgetc 195 00:09:29,450 --> 00:09:34,950 이미 우리는 복제 할 수 있습니다 리눅스 터미​​널 명령. 196 00:09:34,950 --> 00:09:38,850 >> 내가 처음에 말했듯이, 우리는 fgetc와 fputc를했다, 197 00:09:38,850 --> 00:09:41,860 와 fputc는 동반자였다 는 fgetc의 기능. 198 00:09:41,860 --> 00:09:44,880 그리고, 같이 당신은, 상상 이 기록에 해당합니다. 199 00:09:44,880 --> 00:09:49,440 그것은 우리를 작성할 수 있습니다 파일에 하나의 문자. 200 00:09:49,440 --> 00:09:53,290 >> 다시 말하지만,주의해야 할 점은되고, 단지 이는 fgetc와처럼, 파일 201 00:09:53,290 --> 00:09:56,660 우리가 꺼리로 작성하는 것이되어 쓰기 또는 추가를 위해 열었다. 202 00:09:56,660 --> 00:10:00,820 우리는 시도하고 파일에 fputc 사용하는 경우 우리가 읽기를 위해 연 것을, 203 00:10:00,820 --> 00:10:02,760 우리는 고통을거야 실수의 비트. 204 00:10:02,760 --> 00:10:04,440 그러나 호출은 매우 간단하다. 205 00:10:04,440 --> 00:10:08,000 fputc 자본 PTR2, 모든 그 할 것 그건입니다 206 00:10:08,000 --> 00:10:12,040 편지 쓰기 것 파일에 2 도트로 207 00:10:12,040 --> 00:10:14,760 의 이름이었다 텍스트, 우리가 열고 할당 된 해당 파일 208 00:10:14,760 --> 00:10:17,280 포인터가 PTR2합니다. 209 00:10:17,280 --> 00:10:20,430 그래서 우리는 쓰기거야 자본은 2 점 텍스트 파일입니다. 210 00:10:20,430 --> 00:10:24,592 그리고 우리는 느낌표를 쓸 것이다 3 점 파일을 가리 211 00:10:24,592 --> 00:10:27,330 PTR3에 의해 지시 된 텍스트,. 212 00:10:27,330 --> 00:10:29,730 그래서 다시, 여기에 매우 간단. 213 00:10:29,730 --> 00:10:32,727 >> 하지만 지금 우리는 또 다른 일을 할 수 있습니다. 214 00:10:32,727 --> 00:10:34,560 우리는이 예를 우리는 그냥 가고 있었다 215 00:10:34,560 --> 00:10:38,950 고양이를 복제 할 수있는 약 리눅스 명령, 출력합니다 하나 216 00:10:38,950 --> 00:10:40,500 화면. 217 00:10:40,500 --> 00:10:43,510 자, 이제 우리는 능력을 가지고 있음 파일에서 문자를 읽을 수 218 00:10:43,510 --> 00:10:46,590 그리고, 파일에 문자를 쓰기 왜 우리는 단지를 대체하지 않습니다 219 00:10:46,590 --> 00:10:50,720 fputc하는 호출의 printf 호출합니다. 220 00:10:50,720 --> 00:10:54,090 >> 그리고 지금 우리는 CP를 복제 한, 아주 기본적인 리눅스 명령 221 00:10:54,090 --> 00:10:59,100 우리는 방법에 대한 긴 이야기 그 전 리눅스에서 비디오를 명령한다. 222 00:10:59,100 --> 00:11:01,070 우리는 효과적으로했습니다 바로 여기에 있음을 중복. 223 00:11:01,070 --> 00:11:04,790 우리는 문자를 읽고, 그리고, 우리는있어 다른 파일에 그 문자를 작성. 224 00:11:04,790 --> 00:11:07,660 하나의 파일에서 읽기, 쓰기 반복해서 다른,에 225 00:11:07,660 --> 00:11:11,350 또 다시 우리는 EOF 칠 때까지. 226 00:11:11,350 --> 00:11:14,250 우리는의 끝에있어 파일 우리는 복사하려는. 227 00:11:14,250 --> 00:11:18,500 그리고 그게 우리 모두 기록해야합니다 문자 우리는 파일에 필요 228 00:11:18,500 --> 00:11:19,500 우리가 작성하는 그. 229 00:11:19,500 --> 00:11:24,270 그래서이 CP, 리눅스 복사 명령입니다. 230 00:11:24,270 --> 00:11:26,550 >> 의 시작에서 이 비디오, 내가 경고했다 231 00:11:26,550 --> 00:11:29,840 우리는 이야기 것 포인터에 대해 조금. 232 00:11:29,840 --> 00:11:32,480 우린 어디 여기에 특별히입니다 포인터에 대해 이야기 할 것 233 00:11:32,480 --> 00:11:34,800 뿐만 아니라 포인터를 파일로. 234 00:11:34,800 --> 00:11:37,870 따라서이 기능은 종류의 무서운 보인다. 235 00:11:37,870 --> 00:11:39,120 그것은 몇 가지 매개 변수를 가지고있다. 236 00:11:39,120 --> 00:11:40,430 여기서 살펴 봐야 할 것들이 많다. 237 00:11:40,430 --> 00:11:42,760 다른 많은있다 색상과 텍스트. 238 00:11:42,760 --> 00:11:47,100 하지만 실제로는, 그냥있어 는 fgetc의 일반 버전 239 00:11:47,100 --> 00:11:50,110 즉, 우리가 하나를 얻을 수 있습니다 정보의 양. 240 00:11:50,110 --> 00:11:53,560 그것은 우리가 있다면 조금 비효율적 일 수있다 한 번에 문자 하나를 받고, 241 00:11:53,560 --> 00:11:55,770 파일을 반복 한번에 한 문자. 242 00:11:55,770 --> 00:12:00,230 그것을 얻기 위해 더 좋은하지 않을까요 한번에 500 시간 또는 100? 243 00:12:00,230 --> 00:12:03,250 >> 음, FREAD과 동반자 기능 에 fwrite, 우리는을 얘기하자 244 00:12:03,250 --> 00:12:05,490 두 번째로, 우리는 그냥 할 수 있습니다. 245 00:12:05,490 --> 00:12:08,480 우리는 임의의 금액을 읽을 수 있습니다 파일에서 정보의 246 00:12:08,480 --> 00:12:10,290 우리는 어딘가에 일시적으로 저장합니다. 247 00:12:10,290 --> 00:12:12,980 대신 할 수있는의 하나의 변수에 맞게, 248 00:12:12,980 --> 00:12:15,790 우리는 배열에 저장해야 할 수도 있습니다. 249 00:12:15,790 --> 00:12:19,980 그래서, 우리는 네 전달 인수는 포인터 fread-- 할 250 00:12:19,980 --> 00:12:23,940 우리가있어 위치 정보를 저장하는 것, 251 00:12:23,940 --> 00:12:29,180 어떻게 정보의 각 단위 큰 될 것입니다, 정보의 얼마나 많은 단위 252 00:12:29,180 --> 00:12:35,192 우리는 취득을 원하고,에서 어떤 파일을 우리가 그들을 싶어. 253 00:12:35,192 --> 00:12:37,150 아마 가장 좋은 도시 여기에 예를 들어와. 254 00:12:37,150 --> 00:12:41,640 그래서 우리가 선언한다고 가정 해 봅시다 10 정수의 배열. 255 00:12:41,640 --> 00:12:45,080 우리는 단지 선언했습니다 임의 스택 도착 (10)를 int로. 256 00:12:45,080 --> 00:12:46,970 그래서 매우 간단합니다. 257 00:12:46,970 --> 00:12:51,970 지금 우리가 생각하고있는 것은 frecall 우리는 INT의 크기를 읽고있다 258 00:12:51,970 --> 00:12:54,180 시간 정보의 10 바이트. 259 00:12:54,180 --> 00:12:59,040 INT의 존재의 크기 그건 four-- C에서 정수의 크기입니다. 260 00:12:59,040 --> 00:13:02,790 >> 그래서 우리가하고있는 것은 우리가 읽고있는 것입니다 정보의 가치가 40 바이트 261 00:13:02,790 --> 00:13:05,850 파일에서 pt​​r이 지적했다. 262 00:13:05,850 --> 00:13:08,600 그리고 우리는 그 저장하고 40 바이트 어딘가에 263 00:13:08,600 --> 00:13:12,080 우리는 따로 설정 한 경우 메모리의 가치가 40 바이트. 264 00:13:12,080 --> 00:13:15,970 다행히도, 우리는 이미에 의해 그 일을했습니다 그 배열을 바로 거기에, 도착 선언. 265 00:13:15,970 --> 00:13:19,770 즉 보유 할 수있다 10 4 바이트 단위. 266 00:13:19,770 --> 00:13:22,860 총 그래서, (40)을 보유 할 수 있습니다 바이트 정보의 가치. 267 00:13:22,860 --> 00:13:26,540 그리고 우리는 지금 40 바이트를 읽고 파일의 정보, 268 00:13:26,540 --> 00:13:30,330 우리는 도착에 저장하고 있습니다. 269 00:13:30,330 --> 00:13:35,470 >> 포인터의 비디오에서 기억이 이러한 도착 같은 배열의 이름, 270 00:13:35,470 --> 00:13:38,370 정말 그냥 포인터입니다 그 첫 번째 요소. 271 00:13:38,370 --> 00:13:43,680 그래서 우리가 거​​기 도착에 통과 할 때, 우리 포인터를 전달 사실이다. 272 00:13:43,680 --> 00:13:46,120 >> 마찬가지로 우리는이 항아리를 할 수 우리는 필요하지 않습니다 273 00:13:46,120 --> 00:13:51,200 스택에 우리의 버퍼를 저장해야합니다. 274 00:13:51,200 --> 00:13:54,990 우리는 또한 동적으로 할당 할 수있다 의 malloc를 사용하여, 다음과 같이 버퍼. 275 00:13:54,990 --> 00:13:57,340 때, 기억 동적으로 메모리를 할당, 276 00:13:57,340 --> 00:14:00,550 우리는 그것을 저장하고 힙이 아닌 스택. 277 00:14:00,550 --> 00:14:02,110 하지만 여전히 버퍼입니다. 278 00:14:02,110 --> 00:14:06,810 >> 여전히,이 경우에 있어서는, 정보의 640 바이트를 들고 279 00:14:06,810 --> 00:14:09,230 더블 8 바이트를 차지하기 때문이다. 280 00:14:09,230 --> 00:14:11,570 그리고 우리는 그 (80)를 요구하고 있습니다. 281 00:14:11,570 --> 00:14:13,770 우리는 공간을 갖고 싶어 80 루타를 개최합니다. 282 00:14:13,770 --> 00:14:17,210 이렇게 80 시간 8은 640 바이트의 정보이다. 283 00:14:17,210 --> 00:14:21,880 그리고 FREAD에 그 전화입니다 정보의 640 바이트를 수집 284 00:14:21,880 --> 00:14:27,770 파일을 가리키는에서 ptr에와 arr2에 지금 저장. 285 00:14:27,770 --> 00:14:32,770 >> 이제 우리는 또한 FREAD를 처리 할 수 단지는 fgetc를 호출있다. 286 00:14:32,770 --> 00:14:37,140 이 경우에, 우리는에하려는 파일에서 한 문자를 얻을. 287 00:14:37,140 --> 00:14:40,070 그리고 우리는 필요하지 않습니다 배열은 문자를 개최합니다. 288 00:14:40,070 --> 00:14:43,170 우리는 단지 그것을에 저장할 수 있습니다 문자 변수. 289 00:14:43,170 --> 00:14:46,390 >> 잡기는하지만,이다 우리는 단지 변수가있을 때, 290 00:14:46,390 --> 00:14:50,290 우리는에 전달해야 그 변수의 주소 291 00:14:50,290 --> 00:14:52,550 리콜 그 때문에 FREAD에 첫 번째 인수 292 00:14:52,550 --> 00:14:59,210 메모리 위치에 대한 포인터이며 우리는 정보를 저장할 위치. 293 00:14:59,210 --> 00:15:01,550 다시,의 이름 배열은 포인터입니다. 294 00:15:01,550 --> 00:15:04,200 그래서 우리는 앰퍼샌드 배열을 수행 할 필요가 없습니다. 295 00:15:04,200 --> 00:15:07,270 그러나 C, 문자 C 여기에, 배열이 아닌. 296 00:15:07,270 --> 00:15:08,390 그냥 변수입니다. 297 00:15:08,390 --> 00:15:11,840 그래서 우리는을 통과해야 앰퍼샌드 C를 나타냅니다 298 00:15:11,840 --> 00:15:15,350 그것은 우리가 원하는 주소 있다는 정보의 한 바이트를 저장하기 위해, 299 00:15:15,350 --> 00:15:20,479 이 하나의 문자가 우리는 PTR에서 수집하고 있습니다. 300 00:15:20,479 --> 00:15:22,270 나는 통과 할 것이다 Fwrite-- 이 조금 더 301 00:15:22,270 --> 00:15:25,440 quickly-- 꽤 많이 있습니다 FREAD의 정확한 동등한 302 00:15:25,440 --> 00:15:27,720 이 기록에의 제외 대신 읽기, 단지 303 00:15:27,720 --> 00:15:31,610 다른 것이라면처럼 우리는 오픈 했어요 과 가까운 문자를 얻을, 304 00:15:31,610 --> 00:15:32,530 문자를 기입합니다. 305 00:15:32,530 --> 00:15:35,040 지금은 임의의 수의 정보의 양, 306 00:15:35,040 --> 00:15:37,170 정보의 권리 임의의 양. 307 00:15:37,170 --> 00:15:39,790 그래서 그냥 예전처럼, 우리는 할 수 10 정수 배열을 가지고 308 00:15:39,790 --> 00:15:43,210 여기서 우리가 이미 정보는 아마도, 저장. 309 00:15:43,210 --> 00:15:46,580 >> 아마 몇 줄의 코드이었다 즉,이 두 가지 사이에 가야한다 310 00:15:46,580 --> 00:15:49,990 나는 함께, 언 채울 경우 의미있는 뭔가. 311 00:15:49,990 --> 00:15:51,880 나는 10 개의 서로 다른 정수로 채운다. 312 00:15:51,880 --> 00:15:54,920 그리고 대신에, 내가 뭘 해요 일 도착에서 쓰고있다 313 00:15:54,920 --> 00:15:58,600 및 도착로부터 정보를 수집. 314 00:15:58,600 --> 00:16:02,390 그리고 그 정보를 데려 갈거야 그리고 파일에 넣는. 315 00:16:02,390 --> 00:16:05,410 >> 그래서 그 대신은에서가되는 버퍼에 파일, 316 00:16:05,410 --> 00:16:08,790 우리는 지금부터거야 파일 버퍼. 317 00:16:08,790 --> 00:16:10,580 그래서 그냥 반대입니다. 318 00:16:10,580 --> 00:16:16,680 직전 같은 다시, 우리는 할 수 또한 메모리의 힙 덩어리가 319 00:16:16,680 --> 00:16:19,600 우리는 동적했는지 할당하고 읽기 320 00:16:19,600 --> 00:16:21,570 및 파일에 그 물품. 321 00:16:21,570 --> 00:16:24,900 >> 그리고 우리는 또한 하나의 변수가 한 바이트를 보유 할 수 322 00:16:24,900 --> 00:16:27,200 이러한 문자로 정보의. 323 00:16:27,200 --> 00:16:29,830 그러나 다시, 우리는에 전달해야 그 변수의 주소 324 00:16:29,830 --> 00:16:31,840 우리는 그것에서 읽고 싶은 경우. 325 00:16:31,840 --> 00:16:35,280 그래서 우리는 정보를 기록 할 수 있습니다 우리는 그 주소로 찾기 326 00:16:35,280 --> 00:16:39,050 파일 포인터 ptr이. 327 00:16:39,050 --> 00:16:41,630 >> 다른 많은있다 큰 파일 I / O 기능 328 00:16:41,630 --> 00:16:44,650 그 외에 다양한 일을 할 사람들은 우리가 오늘에 대해 얘기했습니다. 329 00:16:44,650 --> 00:16:46,450 사람의 커플 당신이 유용 할 수 있습니다 330 00:16:46,450 --> 00:16:50,840 는 fgets와 fputs는, 이는 동일 331 00:16:50,840 --> 00:16:56,190 는 fgetc와 fputc의 만 읽어 파일에서 하나의 문자열. 332 00:16:56,190 --> 00:16:59,020 대신 단일 문자의, 그것은 전체 문자열을 읽습니다. 333 00:16:59,020 --> 00:17:02,940 기본적으로 수 fprintf와, 당신은 파일에 쓸의 printf를 사용합니다. 334 00:17:02,940 --> 00:17:05,619 당신은 할 수 있습니다처럼 사용 변수 대체 335 00:17:05,619 --> 00:17:09,900 자리 %의 i와 printf의 퍼센트와 D 등, 336 00:17:09,900 --> 00:17:14,690 당신은 유사 걸릴 수 있습니다 printf의 문자열과 인쇄 무엇인가 337 00:17:14,690 --> 00:17:16,800 파일에 그런. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- 당신은 DVD 플레이어가있는 경우 나는 보통 here-- 사용하는 비유입니다 339 00:17:20,720 --> 00:17:23,109 종류의 사용처럼 당신의 되감기 및 빨리 감기 340 00:17:23,109 --> 00:17:25,819 버튼은 영화의 주위에 이동합니다. 341 00:17:25,819 --> 00:17:28,369 마찬가지로 파일을 이동할 수 있습니다. 342 00:17:28,369 --> 00:17:30,250 내부의 것들 중 하나 해당 파일의 구조 343 00:17:30,250 --> 00:17:34,270 이 지표는 동안 그 C가 생성 여기서 당신은 파일에 있습니다. 344 00:17:34,270 --> 00:17:36,420 당신은 매우에 있습니다 바이트 제로에서 시작? 345 00:17:36,420 --> 00:17:39,290 당신이 바이트 100에 있으며, 1000 바이트 등? 346 00:17:39,290 --> 00:17:44,340 당신은 임의로 이동할 대해 fseek 사용할 수 있습니다 앞으로 또는 뒤로 그 표시. 347 00:17:44,340 --> 00:17:46,744 >> 그리고 다시, ftell은 DVD 플레이어와 유사하게, 348 00:17:46,744 --> 00:17:49,660 알려주는 작은 시계처럼 당신이 얼마나 많은 분, 초를 349 00:17:49,660 --> 00:17:52,480 특정 영화에 있습니다. 350 00:17:52,480 --> 00:17:56,990 마찬가지로, ftell은 그 방법을 알려줍니다 바이트는 파일에 있습니다. 351 00:17:56,990 --> 00:18:00,210 무엇이 일어 났는지를 결정하기 위해 feof는 다른 버전입니다 의 당신은했습니다 여부를 검출 352 00:18:00,210 --> 00:18:01,700 파일의 끝에 도달. 353 00:18:01,700 --> 00:18:03,600 그리고 ferror 함수는 함수 당신이 사용할 수있는 354 00:18:03,600 --> 00:18:06,959 뭔가가 있는지 여부를 감지하는 파일과 잘못된 작업을 사라. 355 00:18:06,959 --> 00:18:08,750 다시, 이것은 그냥 표면을 긁는. 356 00:18:08,750 --> 00:18:12,730 많은 더 많은 파일 I / O 아직있다 표준 io.h. 함수 357 00:18:12,730 --> 00:18:16,620 그러나 이것은 아마 당신을 얻을 것이다 파일 포인터와 함께 일하기 시작했다. 358 00:18:16,620 --> 00:18:17,640 나는 더그 로이드입니다. 359 00:18:17,640 --> 00:18:19,750 이 CS50입니다. 360 00:18:19,750 --> 00:18:21,669