Школа создателей компьютерных игр

BannerDrive.ru
[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Запись в файл



Подпишитесь на рассылку "Создание компьютерных игр"

Рассылки Subscribe.Ru
Создание компьютерных игр

Рассылка выходит раз в месяц.


Понравился сайт? Узнайте, как помочь сайту.


Рекомендуемые книги


Андре Ламот.
Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации


Андре Ламот.
Программирование игр для Windows. Советы профессионала


Проголосуйте за сайт в рейтинге GameTop!
(нажмите на кнопку рейтинга)

GameTop - рейтинг игровых ресурсов. Портал Rolemancer (www.rolemancer.ru)

Не забывайте, что результаты рейтинга обновляются раз в неделю. Пожалуйста, голосуйте почаще!


Статистика посещаемости

Rambler's Top100

Чтение из файла | Все обучалки раздела | Рекурсия

Описание

Показывает, как записывать символы ASCII (текст) в файл.

Программа записывает данные в текстовый файл несколькими способами.

Скачать обучалку (Visual C++ 6)

Работа программы

Исходный код


//            - "Talk to me like I'm a 3 year old!" Programming Lessons -        
//                                                                               
//            $Author:            Ben Humphrey      digiben@gametutorials.com    
//                                                                               
//            $Program:            WritingFiles                                  
//                                                                               
//            $Description:      This gives several ways to write to a file      
//                                                                               
//            $Date:                  6/22/00                                    
//                                                                               
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

#include <stdio.h>     // Нам нужно включить этот файл для printf() и fgetc().
#include <string.h>    // Этот нужен для strlen()

void main()     
{              // Начало программы
      FILE *fp;          
      // Эта переменная будет использоваться для записи в файл. Еще раз, 'fp' (filepointer) означает указатель.

      char szLine[50] = {0};                                                
      // Эта используется для хранения текста, который будет записываться в файл. Не забывайте использовать {0}
      // для инициализации массивов.

      char szName[] = "Adol";                                          
      // Здесь мы инициализируем имя игрока. Длина этого символьного массива - 4 символа.
      // Если не указывать число в квадратных скобках, создается массив с числом элементов равным числу символов.
                                                                              
      int health = 100, gold = 75;                                          
      // Две целочисленные переменные, которые мы будем использовать для записи золота и здоровья игрока в файл.
      
      int length = 0;      
      // Переменная для хранения длины выводимой строки.
      
      int i = 0;
      // Переменная-счетчик
                                                                                    
      fp = fopen("Stats.txt", "w");                                    
      
      /*      Так мы получаем адрес памяти, где располагается файл. 
            И снова, функции нужны имя файла и буква.            
            На этот раз, так как мы хотим записать в файл, мы используем "w".
            Если на диске уже есть файл "stats.txt", его содержимое перед записью будет удалено.
            Если вы хотите добавить данные в файл, используйте "а". Тогда файл не будет стерт. */

      /*      Теперь, у нас должен быть корректный файловый указатель, но мы должны удостовериться в этом. 
            Если fp равно 0, это значит fopen() не смогла создать файл. Такое может быть потому что у
            нас недостаточно памяти или места на диске.
      */
                                                                                    
      if(fp == 0)                                                                  
      {                                                                              
            printf("ERROR: Could not create Stats.txt!\n");      
            // Напечатать сообщение об ошибке. Это очень важно, особенно в больших проектах.
                                                                                    
            return;       // Завершение функции и программы
      }                                                                  
      
      ////////////////////// FPUTC() //////////////////////////

      sprintf(szLine, "Player: %s", szName);                        
      
      /*      Sprintf() работает почти так же как и printf(), только данные выводятся не на экран а в буфер или строку.
            В данном случае мы сохраняем имя игрока в строку, которая выглядит вот так: "Player: Adol".
            Параметры: строка, куда сохраняются данные, строка, которая сохраняется, данные для вставки в строку.
            Так же как и в printf(), мы можем использовать несколько параметров для данных, например
            sprintf(szLine, "%d %d %d", num1, num2, num3);
      */
      
      length = strlen(szLine);                                          
      // Здесь мы используем функцию для того чтобы узнать количество символов нашей новой строки.
      
      for(i = 0; i < length; i++)            
      {
            fputc(szLine[i], fp);                                          
      }

      /*      Здесь мы создаем цикл для записи каждого символа в файл. 
            Мы продолжаем, до тех пор пока i не будет превышать length (индексы массивов начинаются с нуля).
            Как и fgetc(), fputc() записывает один символ в файл. И после того, как цикл завершится, в файле будет
            строка "Player: Adol".
      */

      fputc('\n', fp);
      // Так мы поместим файловый указатель на следующую строку текстового файла.

      sprintf(szLine, "Health: %d", health);
      // Здесь создается строка, которая выглядит так: "Health: 100". Затем мы можем сохранить ее в файл.

      length = strlen(szLine);
      // Еще раз используем функцию для того чтобы узнать количество символов нашей новой строки.

      for(i = 0; i < length; i++)                              
      {
            fputc(szLine[i], fp);                                          
      }

      /*      Здесь мы создаем цикл для записи каждого символа в файл. 
            Мы продолжаем, до тех пор пока i не будет превышать length (индексы массивов начинаются с нуля).
            На этот раз мы пишем строку "Health: 100". После того, как цикл завершится, в файле будет 2 строки
      */

      fputc('\n', fp);                                                      
      // Так мы поместим файловый указатель на следующую строку текстового файла.

      sprintf(szLine, "Gold: %d", gold);
      // Здесь создается строка, которая выглядит так: "Gold: 75". Затем мы можем сохранить ее в файл.

      length = strlen(szLine);
      // Еще раз используем функцию для того чтобы узнать количество символов нашей новой строки.


      for(i = 0; i < length; i++)                                          
      {
            fputc(szLine[i], fp);                                          
      }

      /*      Здесь мы создаем цикл для записи каждого символа в файл. 
            Мы продолжаем, до тех пор пока i не будет превышать length (индексы массивов начинаются с нуля).
            На этот раз мы пишем строку "Gold: 75". После того, как цикл завершится, в файле будет 3 строки.
      */

      ////////////////////// FPUTS() //////////////////////////

      fputc('\n', fp);                                                      
      fputc('\n', fp);                                                      

      sprintf(szLine, "Player: %s", szName);                        

      fputs(szLine, fp);
      /*      Как и fgets(), эта функция берет строку целиком, а не только отдельный символ.
            Она запишет строку в файл. Нужно просто передать ее, а также указатель.   
      */
            
      fputc('\n', fp);                                                      

      sprintf(szLine, "Health: %d", health);                  

      fputs(szLine, fp);              // Сохраняем в файл "Health: 100".

      fputc('\n', fp);                                                      

      sprintf(szLine, "Gold: %d", gold);                        

      fputs(szLine, fp);              // Сохраняем в файл "Gold: 75".
      
      ////////////////////// FPRINTF() ////////////////////////
      
      /*      Также, как и printf(), fprintf() работает точно так же. Вместо того, чтобы печатать на экран,
            функция печатает в файл. В качестве первого параметра нужно задать указатель на файл.      */

      fprintf(fp, "\n\n");    
      // Так мы сдвинем указатель в файле на 2 строки вниз.
                                                                                    
      fprintf(fp, "Player: %s\n", szName);             // Сохраняем имя игрока в файл.
      fprintf(fp, "Health: %d\n", health);             // Сохраняем здоровье игрока в файл.
      fprintf(fp, "Gold: %d\n",   gold);               // Сохраняем золото игрока в файл.

      fclose(fp);    
      // fclose() закрывает файл (очень важно).
      // Всегда следует закрывать файл после работы с ним.
      // Это освобождает память и открывает доступ к файлу.

}         // Конец программы

//////////////////////////// Примечание //////////////////////////

/*      Теперь вы знаете, как записывать данные в файл, и какой же
      способ наиболее простой? Скорее всего вы захотите использовать
      fprintf(). Хотя я никогда не использовал первые два способа, я 
      полагаю, что необходимо дать различные примеры.

      Конечно, вы не захотите усложнять программу. Скорее всего вы будете
      запрашивать ввод имени игрока в начале, сохранять его, и начинать с
      определенным количеством здоровья и золота. Теперь, когда вы знаете,
      как читать данные и сохранять их в файл, вы сможете создавать файл
      сохранения игры. Когда данные записаны, их просто читать. Я рекомендую
      использовать fprintf() для записи данных и fscanf() для их чтения.
*/

// © 2001 GameTutorials
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

Скачать обучалку (Visual C++ 6)

Чтение из файла | Все обучалки раздела | Рекурсия

[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Copyright © 2003-2005 Евгений Казеко. Все права защищены. E-mail: evgeniy@kazeko.com

видео секса , предсказания, тайна имени , дартс нанесение