2 00:00:00,000 --> 00:00:01,860 >> 스피커 1 : 어디 보자 CS50 도서관에서, 3 00:00:01,860 --> 00:00:05,190 특히 자사의 getInt 기능. 4 00:00:05,190 --> 00:00:07,820 여기에서 우리는 실제 소스가 getInt를위한 코드입니다. 5 00:00:07,820 --> 00:00:12,050 그리고 너무 오래하지의 통지 및 그것의 대부분은 while 루프를 구성 - 6 00:00:12,050 --> 00:00:15,620 그의 무한 루프 - 만이 우리가 실제로 일단 값을 반환 7 00:00:15,620 --> 00:00:17,400 우리가 기대했던 얻었다. 8 00:00:17,400 --> 00:00:18,700 의 그것을 통해 살펴 보겠습니다. 9 00:00:18,700 --> 00:00:21,650 >> 먼저 여기에 주목 루프가 시작되는 동안. 10 00:00:21,650 --> 00:00:25,390 우리는 코드 라인을 가지고 있음을 알 다음 그 사실은,하는 GetString을 호출 11 00:00:25,390 --> 00:00:29,620 및에 반환 값을 저장 변수, 문자열 형식, 라인했다. 12 00:00:29,620 --> 00:00:31,210 우리는 전성 검사의 비트를 않습니다. 13 00:00:31,210 --> 00:00:35,770 라인 == NULL의 경우에, 우리 호기심 INT_MAX를 반환합니다. 14 00:00:35,770 --> 00:00:40,140 >> 지금은 INT_MAX가 있음을 밝혀 특별한 상수 다른 선언 15 00:00:40,140 --> 00:00:44,030 그게 가장 큰 수를 지정합니다 당신이에 나타낼 수 있음을 int로 16 00:00:44,030 --> 00:00:45,160 이 같은 프로그램입니다. 17 00:00:45,160 --> 00:00:49,430 이제 우리는 임의로 반환하기로 결정했습니다 의 감시 값으로 INT_MAX 18 00:00:49,430 --> 00:00:53,120 종류, 우리가 소유 한 하나 오류를 의미하는 것은 발생했습니다. 19 00:00:53,120 --> 00:00:56,230 그래서 우리가 지불하는 가격은 물론이며, 그 getInt를 분명히 할 수 없습니다 20 00:00:56,230 --> 00:01:01,440 실제로만큼 큰 숫자를 반환 INT_MAX,이에 원하는 경우에도 때문에, 21 00:01:01,440 --> 00:01:04,730 그 반환 값은 정말해야 호출자에 의해 해석 - 22 00:01:04,730 --> 00:01:06,260 누구든지 대해 getInt를 사용하는 것 - 23 00:01:06,260 --> 00:01:09,340 어떤 종류의 오류로. 24 00:01:09,340 --> 00:01:13,840 >> 다음으로,이 선언 한 것을 알 수 INT n을 입력하고 문자 다. 25 00:01:13,840 --> 00:01:18,030 이 코드 다음 줄에, 나는 전화 sscanf를 호출 한 함수에 전달 26 00:01:18,030 --> 00:01:18,970 네 개의 인수. 27 00:01:18,970 --> 00:01:25,110 스트링 라인, 사용자의 형식입니다에 입력, "% i 서 %의 C", 28 00:01:25,110 --> 00:01:28,850 I는 사용자의 세력에게 기대하고있어 해당 문자열 의 주소 다음 유형, 29 00:01:28,850 --> 00:01:30,920 N 및 C의 주소. 30 00:01:30,920 --> 00:01:34,860 인생에서 지금의 위해 sscanf 목적은 참으로 원하는 문자열을 검색하려면 31 00:01:34,860 --> 00:01:38,700 특정 형식이 프로그래머 그 두 번째 인수로 지정했다. 32 00:01:38,700 --> 00:01:42,020 이 경우, %의 난에 , % C는이 때문이다. 33 00:01:42,020 --> 00:01:46,700 sscanf에서는의 int를 발견 그렇다면 사용자의 입력, 즉 INT가 저장됩니다 34 00:01:46,700 --> 00:01:50,270 N이라는 변수의 내부에 있기 때문에 우리는 세 번째로 제공 한 35 00:01:50,270 --> 00:01:52,810 N의 주소를 위해 sscanf 인수. 36 00:01:52,810 --> 00:01:56,870 어떤 sscanf를 실제로 갈 수 있다는 것을 의미합니다 거기에, 그 안에 값을 업데이트합니다. 37 00:01:56,870 --> 00:01:59,990 >> 이제, 경우에 사용자 유형 더 뭔가 38 00:01:59,990 --> 00:02:01,220 하나 이상의 숫자 이상 - 39 00:02:01,220 --> 00:02:03,570 즉, 어떤 종류의 문자 - 40 00:02:03,570 --> 00:02:07,940 그 주소가 그 두 번째 변수 C, 우리는 네 번째로 sscanf에서에 전달 41 00:02:07,940 --> 00:02:10,560 인수도 채워집니다. 42 00:02:10,560 --> 00:02:14,220 이제 검사의 상승 사용자로부터의 추가적인 특성은 43 00:02:14,220 --> 00:02:17,360 그가 또는 그녀가 협조하지 않을 경우, 그냥 INT 이상의 형식, 44 00:02:17,360 --> 00:02:20,530 우리는이에 감지 할 수 있습니다 방법, 그 경우 sscanf에서 인해 45 00:02:20,530 --> 00:02:24,860 의미, 2를 반환하는 것입니다 그 자리의 모두가 가득 차 있었다 46 00:02:24,860 --> 00:02:25,600 값. 47 00:02:25,600 --> 00:02:30,360 그러나 우리는 그 대신 sscanf를 바라고있어 단지 사용자를 의미하는 1을 반환 48 00:02:30,360 --> 00:02:31,630 int를 제공했다. 49 00:02:31,630 --> 00:02:34,480 >> 우리는 무엇을 할 경우 sscanf에서 실제로 1을 반환? 50 00:02:34,480 --> 00:02:39,150 음, 우리는 즉시 라인을 확보하는 사용자가 다음에 입력하고, 우리 51 00:02:39,150 --> 00:02:42,670 즉시 갖는 N 반환 int를 얻었다. 52 00:02:42,670 --> 00:02:47,180 또, sscanf 또는 1을 반환하지 않는 경우 따라서 사용자는 협력하지 않았다 53 00:02:47,180 --> 00:02:51,470 우리는 여전히 라인업을 확보하지만, 우리 지금 다시 시도하라는 메시지를 사용자에게 표시합니다. 54 00:02:51,470 --> 00:02:55,390 그리고 우리는 그 내부에 여전히이기 때문에 그렇지 않으면 무한 루프 프로세스 55 00:02:55,390 --> 00:03:00,190 다시 시작하고, 아마 다시 것이다 아마 다시 때까지 사용자가 실제로 56 00:03:00,190 --> 00:03:01,500 우리에게 int를 제공합니다. 57 00:03:01,500 --> 00:03:21,490