2 00:00:00,000 --> 00:00:02,470 >> Выступающий 1: Давайте напишем программу, которая запрашивает у пользователя имена и 3 00:00:02,470 --> 00:00:03,990 дома трех студентов. 4 00:00:03,990 --> 00:00:07,300 Но вместо того, просто распечатать их имена и домов к экрану, давайте 5 00:00:07,300 --> 00:00:09,660 вместо сохранить эту информацию на диск. 6 00:00:09,660 --> 00:00:14,530 Другими словами, давайте создадим, скажем, CSV файл, для значений, разделенных запятыми, 7 00:00:14,530 --> 00:00:17,720 которые на самом деле просто текстовый файл, который программ, как Excel или Numbers 8 00:00:17,720 --> 00:00:21,690 можно открыть, и эффективно спасти тех, Имена и дома постоянно, так что 9 00:00:21,690 --> 00:00:23,220 мы можем просматривать их позднее. 10 00:00:23,220 --> 00:00:25,960 >> Чтобы сделать это, давайте сначала взглянем на некоторые стандартный код, что у меня есть 11 00:00:25,960 --> 00:00:27,650 началось с уже. 12 00:00:27,650 --> 00:00:32,380 Обратите внимание, что среди первых заголовков наверху теперь стандарт lib.h которые 13 00:00:32,380 --> 00:00:36,710 случается, есть некоторые функции, связанные подать ввода-вывода, ввод / файла и выход. 14 00:00:36,710 --> 00:00:39,560 Обратите внимание, что я также заявил постоянная называется СТУДЕНТЫ - 15 00:00:39,560 --> 00:00:42,380 заглавными буквами - значение которого жестко запрограммирован как три. 16 00:00:42,380 --> 00:00:45,820 Обратите внимание теперь, что внутри моя главная Программа, я объявляю массив 17 00:00:45,820 --> 00:00:50,270 Размер три помощью этой константы с именем СТУДЕНТЫ каждый из членов, имеет 18 00:00:50,270 --> 00:00:51,650 введите студентов. 19 00:00:51,650 --> 00:00:56,150 >> Вспомним теперь, что студент мы определим как имеющие имя и дом оба 20 00:00:56,150 --> 00:01:00,410 которые являются строками, как за это Декларация предписывает, точка ч. 21 00:01:00,410 --> 00:01:04,680 Теперь вернемся в structs1.c, заметили, что я имеют цикл здесь, что собирается 22 00:01:04,680 --> 00:01:06,750 итерации от нуля до трех. 23 00:01:06,750 --> 00:01:10,020 Это собирается подсказывают мне для студента Имя и дом студента 24 00:01:10,020 --> 00:01:12,310 снова и снова и снова. 25 00:01:12,310 --> 00:01:15,620 >> Затем в нижней части этой программы заметить, что у меня есть еще один цикл 26 00:01:15,620 --> 00:01:19,970 что собирается освободить г-й студента Имя и дом-й студенческий в 27 00:01:19,970 --> 00:01:21,570 Аналогично строится цикл. 28 00:01:21,570 --> 00:01:24,480 Надо отметить, что мы могли бы объединить эти петли в один, но я хотел бы 29 00:01:24,480 --> 00:01:28,180 есть некоторые явные сегменты кода ради обсуждения здесь. 30 00:01:28,180 --> 00:01:31,920 >> Сейчас в между теми, для петель, давайте на самом деле есть еще один, и этот'S 31 00:01:31,920 --> 00:01:35,210 цель в жизни на самом деле сохранить все из этих имен и домов, которые 32 00:01:35,210 --> 00:01:39,810 В настоящее время в оперативной памяти на диск в виде из значений, разделенных запятыми. 33 00:01:39,810 --> 00:01:42,080 Чтобы сделать это, мы собираемся использовать три новых функции - 34 00:01:42,080 --> 00:01:47,450 F открыто, F Е и F близки, что открыть файл, печать в файл, и 35 00:01:47,450 --> 00:01:48,440 закрыть файл. 36 00:01:48,440 --> 00:01:49,690 Мы можем использовать их следующим образом. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> ФАЙЛОВ, во всех заглавных буквах, что несколько из любопытство в C, файл запускается Еореп 39 00:01:58,240 --> 00:02:03,020 цитата конец цитаты и теперь название файл, скажем, students.CSV, но я не мог 40 00:02:03,020 --> 00:02:08,150 называют его чем угодно, запятая, и теперь я собирается указать один ш внутри 41 00:02:08,150 --> 00:02:09,390 двойных кавычек. 42 00:02:09,390 --> 00:02:13,290 Вт, как вы уже догадались уже, означает, что Еореп должны открыть этот файл 43 00:02:13,290 --> 00:02:17,360 называется Students.CSV для написания, так что мы можем реально сэкономить некоторые 44 00:02:17,360 --> 00:02:19,370 Содержание к нему. 45 00:02:19,370 --> 00:02:23,080 >> Давайте следующий проверка, если файл не равен NULL. 46 00:02:23,080 --> 00:02:25,860 Потому что если это так, то есть, вероятно, пошло не так в этом случае мы 47 00:02:25,860 --> 00:02:28,340 не следует продолжать, чтобы попытаться печатать ничего к нему. 48 00:02:28,340 --> 00:02:33,400 Но если это не нулевой, то внутри Фигурные скобки я собираюсь итерации 49 00:02:33,400 --> 00:02:38,030 от я равен 0 до СТУДЕНТОВ, и я собираюсь 50 00:02:38,030 --> 00:02:40,180 увеличить я на каждой итерации. 51 00:02:40,180 --> 00:02:45,750 А внутри этой петли, я собираюсь fprintf так, чтобы печать в файл - 52 00:02:45,750 --> 00:02:47,940 специально один Я уже открыт - 53 00:02:47,940 --> 00:02:54,650 Строка, выглядит следующим образом% С,% ы косая черта п близко цитата. 54 00:02:54,650 --> 00:02:58,790 >> А теперь я хочу, чтобы подключить к каждому из эти заполнители фактические значения 55 00:02:58,790 --> 00:03:03,390 имени студента и дома с помощью оператора точки. 56 00:03:03,390 --> 00:03:10,030 Студенты кронштейн i.name, студенты Кронштейн i.house близкие скобка 57 00:03:10,030 --> 00:03:11,230 точка с запятой. 58 00:03:11,230 --> 00:03:16,180 Теперь ниже этого цикл, я просто буду называть FClose файла для того, 59 00:03:16,180 --> 00:03:18,520 в конечном счете закрыть файл. 60 00:03:18,520 --> 00:03:21,360 >> Теперь, когда я запустить эту программу, я не должен на самом деле вижу ничего на 61 00:03:21,360 --> 00:03:25,010 экран, но я должен иметь после запуска эта программа файл с именем 62 00:03:25,010 --> 00:03:29,130 Students.CSV в том же каталоге, что Я запускаю команду в том, что следует 63 00:03:29,130 --> 00:03:32,480 содержать запятую Список значений. 64 00:03:32,480 --> 00:03:34,790 Давайте взглянем. 65 00:03:34,790 --> 00:03:41,690 >> Сделать Структуры 1. / Structs1 студента назвать, скажем, Давида, 66 00:03:41,690 --> 00:03:43,140 он будет жить в Mather. 67 00:03:43,140 --> 00:03:46,890 Имя студента, скажем, Лорен, она будет жить в Леверетта. 68 00:03:46,890 --> 00:03:50,800 Имя студента, скажем, Роб, он будет жить в Kirkland. 69 00:03:50,800 --> 00:03:54,050 Теперь, опять же, как и ожидалось, ничего не появляется , произошло, но позвольте мне 70 00:03:54,050 --> 00:03:58,790 идти вперед в командной строке и типа г редактировать students.CSV в надежде, что 71 00:03:58,790 --> 00:04:00,850 что файл действительно существует. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, и действительно, заметить, что файл, содержащий чисто 73 00:04:07,010 --> 00:04:11,320 текст, но текст через запятую для каждого поля, действительно существует. 74 00:04:11,320 --> 00:04:14,530 И если бы мы использовали, не CS50 Прибор, но больше знакомы с Mac или 75 00:04:14,530 --> 00:04:18,080 ПК, то получается, что мы могли бы действительно открыть этот файл CSV с более 76 00:04:18,080 --> 00:04:20,400 знакомы программы, как Excel или Numbers. 77 00:04:20,400 --> 00:04:22,906