1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> INTERLOCUTEUR 1: Réglons maintenant ce dernier programme. 3 00:00:01,960 --> 00:00:04,920 Et cette fois, nous allons allouer explicitement une partie de mémoire dans laquelle l' 4 00:00:04,920 --> 00:00:06,550 l'entrée de l'utilisateur sera stocké. 5 00:00:06,550 --> 00:00:09,600 Pour ce faire, nous allons affiner sur cette première ligne de code où nous avons déclaré s 6 00:00:09,600 --> 00:00:11,590 auparavant d'être une star char. 7 00:00:11,590 --> 00:00:14,210 Cette fois, nous allons re-déclarer comme suit - 8 00:00:14,210 --> 00:00:19,380 carbonisation de la console 16, par exemple, ferme la parenthèse. 9 00:00:19,380 --> 00:00:23,690 >> En d'autres termes, nous allons déclarer s à pas plus être une adresse d'un personnage, 10 00:00:23,690 --> 00:00:26,610 mais plutôt un ensemble de 16 caractères. 11 00:00:26,610 --> 00:00:30,295 De cette façon, l'utilisateur peut saisir jusqu'à 15 caractères et toujours laisser de la place pour 12 00:00:30,295 --> 00:00:31,570 un terminateur null. 13 00:00:31,570 --> 00:00:35,870 Passons à épargner, Compiler, et exécuter ce programme. 14 00:00:35,870 --> 00:00:40,770 Faire scanf2 point barre scanf2. 15 00:00:40,770 --> 00:00:45,100 Voyons maintenant saisissez une chaîne comme bonjour, et nous remercions pour le bonjour. 16 00:00:45,100 --> 00:00:46,440 >> Maintenant, il ya toujours un problème. 17 00:00:46,440 --> 00:00:50,140 Je ne tapé dans bonjour, qui est seulement cinq caractères, plus 1 pour le nul 18 00:00:50,140 --> 00:00:50,445 terminateur. 19 00:00:50,445 --> 00:00:53,610 Il nous laisse avec seulement un besoin de six octets. 20 00:00:53,610 --> 00:00:56,740 >> Mais malheureusement, nous ne attribué 16 au total. 21 00:00:56,740 --> 00:01:01,305 Donc, si l'utilisateur en fait les types de 16 caractères, ou 17, ou plusieurs centaines de 22 00:01:01,305 --> 00:01:04,410 personnages, nous ne sommes toujours pas aller à avoir assez de place dans la mémoire pour la 23 00:01:04,410 --> 00:01:05,400 l'entrée de l'utilisateur. 24 00:01:05,400 --> 00:01:07,750 Et en fait, c'est ce qui rend obtenir les commentaires de l'utilisateur afin 25 00:01:07,750 --> 00:01:08,940 difficile en général. 26 00:01:08,940 --> 00:01:12,270 Et en effet, c'est pourquoi nous avons mis en la fonction de chaîne entrer en premier 27 00:01:12,270 --> 00:01:13,900 place dans la bibliothèque de CS50 - 28 00:01:13,900 --> 00:01:16,900 de comprendre comment gérer les des situations où l'utilisateur saisit dans 29 00:01:16,900 --> 00:01:19,710 plus de caractères que nous initialement prévu. 30 00:01:19,710 --> 00:01:21,750 >> Franchement, sans complètement la réécriture de ce programme, 31 00:01:21,750 --> 00:01:23,290 il n'y a pas de solution propre. 32 00:01:23,290 --> 00:01:26,970 Au contraire, ce que nous aurions à faire est d'obtenir un caractère à partir de l'utilisateur un à la 33 00:01:26,970 --> 00:01:28,860 temps, encore et encore. 34 00:01:28,860 --> 00:01:32,510 Et à chaque point si nous nous rendons compte que nous sommes de mémoire, nous aurions au 35 00:01:32,510 --> 00:01:36,450 ce point revenir dans et réaffecter un peu plus de mémoire, copiez l'utilisateur de 36 00:01:36,450 --> 00:01:39,400 entrée précédente de notre premier morceau de mémoire dans le nouveau, 37 00:01:39,400 --> 00:01:40,810 plus grande part de la mémoire. 38 00:01:40,810 --> 00:01:44,610 Et puis répéter ce processus encore et nouveau jusqu'à ce que l'utilisateur se fait fournir 39 00:01:44,610 --> 00:01:45,860 son entrée. 40 00:01:45,860 --> 00:01:48,246