1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> 스피커 1의 지금 해결하자 그 마지막 프로그램입니다. 3 00:00:01,960 --> 00:00:04,920 그리고이 시간은의이 명시 적으로 할당 할 일부 메모리있는 4 00:00:04,920 --> 00:00:06,550 사용자의 입력이 저장됩니다. 5 00:00:06,550 --> 00:00:09,600 이렇게하기 위해, 그 첫 번째에 연마하자 우리의 선언 코드의 라인 6 00:00:09,600 --> 00:00:11,590 이전에 문자 스타가 될 수 있습니다. 7 00:00:11,590 --> 00:00:14,210 이 시간은,하자 다시 선언 그것은 다음과 같은 - 8 00:00:14,210 --> 00:00:19,380 문자의 브래킷 (16), 예를 들면, 대괄호. 9 00:00:19,380 --> 00:00:23,690 >> 즉,의 더에의를 선언 할 수 있도록 더 이상 문자의 주소, 10 00:00:23,690 --> 00:00:26,610 하지만 16 자 오히려 배열. 11 00:00:26,610 --> 00:00:30,295 이 방법은 사용자가 최대 15를 입력 할 수 있습니다 문자와 아직 여지를 남겨 12 00:00:30,295 --> 00:00:31,570 널 (NULL) 종료. 13 00:00:31,570 --> 00:00:35,870 저장을의 계속하자, 컴파일, 이 프로그램을 실행합니다. 14 00:00:35,870 --> 00:00:40,770 scanf2 점 슬래시 scanf2을 확인합니다. 15 00:00:40,770 --> 00:00:45,100 의 지금 안녕하세요 같은 문자열을 입력하자 우리는 인사에 대한 감사입니다. 16 00:00:45,100 --> 00:00:46,440 >> 자, 문제는 여전히있다. 17 00:00:46,440 --> 00:00:50,140 난 단지 만입니다, 안녕하세요에서 입력 널 다섯 글자, 플러스 1 18 00:00:50,140 --> 00:00:50,445 터미네이터. 19 00:00:50,445 --> 00:00:53,610 그것은 단지 우리를 잎 6 바이트가 필요. 20 00:00:53,610 --> 00:00:56,740 >> 그러나 불행하게도, 우리는 단지 총 16 할당. 21 00:00:56,740 --> 00:01:01,305 따라서 만약 16에서 사용자가 실제로 형식 문자 또는 17 또는 수백 22 00:01:01,305 --> 00:01:04,410 자, 우리는 여전히 않을 거고 메모리에 충분한 공간이 23 00:01:04,410 --> 00:01:05,400 사용자의 입력. 24 00:01:05,400 --> 00:01:07,750 그리고 사실,이 만드는 것입니다 사용자 입력을 받고 있으므로 25 00:01:07,750 --> 00:01:08,940 일반적으로 어렵다. 26 00:01:08,940 --> 00:01:12,270 우리가 구현하는 이유 그리고 사실,이는 처음에 GET 문자열 기능 27 00:01:12,270 --> 00:01:13,900 CS50 라이브러리의 장소 - 28 00:01:13,900 --> 00:01:16,900 사람들을 처리하는 방법을 알아 내기 위해 상황을 어디에 사용자 유형에 29 00:01:16,900 --> 00:01:19,710 우리보다 더 많은 문자 처음에 예상. 30 00:01:19,710 --> 00:01:21,750 >> 솔직히없이 완전히 이 프로그램을 다시 작성하는 것은, 31 00:01:21,750 --> 00:01:23,290 해결법은 없습니다. 32 00:01:23,290 --> 00:01:26,970 오히려, 우리가 수행해야하는 것은 얻을 수있다 에서 사용자가 하나의 문자 33 00:01:26,970 --> 00:01:28,860 시간, 또 다시. 34 00:01:28,860 --> 00:01:32,510 그리고 각 지점에서 우리는 우리가있어 실현하는 경우 메모리 부족, 우리의에있을 것 35 00:01:32,510 --> 00:01:36,450 그 점에 돌아가서 재 할당 일부 메모리는 사용자의 복사 36 00:01:36,450 --> 00:01:39,400 우리의 첫 번째 청크에서 이전 입력 새에 메모리, 37 00:01:39,400 --> 00:01:40,810 메모리의 큰 덩어리. 38 00:01:40,810 --> 00:01:44,610 그리고 다시 그 과정을 반복하고 사용자가 제공 할 때까지 행해진 다 다시 39 00:01:44,610 --> 00:01:45,860 자신의 입력. 40 00:01:45,860 --> 00:01:48,246