Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в файл и отображение содержимого файла, Это скорее теоретический вопрос 
V
    Опции темы
Vokunya
Дата 4.12.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 7.12.2008
Где: Беларусь

Репутация: нет
Всего: 1



Считываю содержимое файла на монитор.
Затем добавляю еще одну запись в файл.
Так вот если теперь вывести данные, то они будут такими же, как и до добавление, а новая запись отобразится только после перезапуска программы. 

Так записываю в файл:
Код

case 4:
{
 if ((file = fopen (fileName, "a+b")) == NULL)
     {
          fputs ("Couldn't open the file", stderr);
          exit (1);
     }
 if (count == MAXRECORDS)
     {
        fputs ("File is full", stderr);
        exit (1);
     }
 filecount = count;
 puts ("Input the number of bus or press \"Enter\" to exit");
 getchar ();
 while (count < MAXRECORDS && gets (bus [count].number) != NULL
                            && bus [count].number [0] != '\0')
       {
           puts ("Input destination");
           gets (bus [count].destination);
           puts ("Input departure time");
           gets (bus [count].departureTime);
           puts ("Input arrival time");
           gets (bus [count].arrivalTime);
           count++;
           if (count < MAXRECORDS)
                  puts ("Input the number of next bus");
       }
 if (count > 0)
      {
          fwrite (&bus [filecount], size, count - filecount, file);
      }
 break;
}


Считываю так:
Код

 case 6:
            {
                count = 0;
                 if ((file = fopen (fileName, "a+b")) == NULL)
                     {
                        fputs ("Couldn't open the file", stderr);
                        exit (1);
                     }
                 rewind (file);
                 puts ("\nCurrents contents of the file\n");
                 printf ("%8s %15s %18s %18s\n", "Number", "Destination", "Departure time", "Arrival time");
                 while (count < MAXRECORDS && fread (&bus [count], size, 1, file) == 1)
                      {
                           printf ("%8s  %14s %17s %17s\n", bus [count].number, bus [count].destination,
                                     bus [count].departureTime, bus [count].departureTime);
                           count++;
                      }
                break;
            }

т. е. запускаю программу, нажимаю 6 - правильно отображаются данные, нажимаю 4 - запись добавляется, опять 6 - новая запись не отображается
затем перезапускаю программу, 6 - новая запись отображается
PM MAIL ICQ   Вверх
djamshud
Дата 4.12.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Делайте fflush после записи.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Vokunya
Дата 4.12.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 7.12.2008
Где: Беларусь

Репутация: нет
Всего: 1



Все. Нашлись люди, которые ткнули носом в ошибку smile
в добавлении не закрывал файл
Код

fclose (file)


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1074 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.