Форум программистов, компьютерный форум CyberForum.ru

Работа перемещающего загрузчика - C++

Восстановить пароль Регистрация
 
ClO_own
0 / 0 / 0
Регистрация: 15.04.2012
Сообщений: 7
15.04.2012, 14:33     Работа перемещающего загрузчика #1
Добрый день, необходимо разработать приложение, моделирующее работу перемещающего загрузчика. Программа считывает двоичный файл следующей структуры: N A1 A2 ... AM D0 D1 ... DK
N - кол-во ячеек с адресами данных.
A - ячейки с адресами данных.
D - ячейки с данными.
Необходимо изменить значение в области данных по адресам A1 A2 ... AM на величину S, вводимую с клавиатуры. Ячейки в файле 16 разрядные.
Проблема в следующем, данные не переписываются в файл, а лишь добавляется 1 ячейка в конец файла, при последующих запусках приложения файл и вовсе не изменяется.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
 
using namespace std;
 
int main()
{
    char NameOfFile[20];
    int err, i;
    unsigned short int Numb, DataCell, S, OffsetInFile;
    unsigned short int *array;
    long position;
    FILE *f1;
 
   cout<<"Enter file name: ";
    gets(NameOfFile);
    cout<<"Entered name: "<<NameOfFile<<"\n";
    if((f1 = fopen(NameOfFile, "rb+wb"))==NULL)
    {
           cout<<"Error at opening\n";
           system("pause");
           return 1;
    }
    position=ftell(f1);
    cout<<"Position in file: "<<position<<"\n";
    fread(&Numb, sizeof(unsigned short int), 1, f1);
    cout<<"Number of cells for modification:"<<Numb<<"\n";
    array = new unsigned short int [Numb];
    for(i=0; i<Numb; ++i)
    {
             fread(&array[i], sizeof(unsigned short int), 1, f1);
    }
    for(i=0; i<Numb; i++)
             cout<<array[i]<<"\n";
    position=ftell(f1);
    cout<<"Position in file: "<<position<<"\n";
    for(i=0; i<Numb; ++i)
    {
             OffsetInFile=array[i]*2;
             fseek(f1, OffsetInFile, position);
             fread(&DataCell, sizeof(unsigned short int), 1, f1);
             cout<<"DataCell="<<DataCell<<"\n";
             cout<<"Enter S: ";
             cin>>S;
             DataCell=DataCell+S;
             cout<<"DataCell="<<DataCell<<"\n";
             fseek(f1, OffsetInFile, position);
             fwrite( (void *)&DataCell, sizeof(unsigned short int), 1, f1);
    }
  fclose(f1);
    system("pause");
    return 0;
}
Добавлено через 49 минут
Прошу прощения, нашел у себя глупейшую ошибку..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 14:33     Работа перемещающего загрузчика
Посмотрите здесь:

C++ Работа со структурами, работа с векторами.
C++ Моделирование перемещающего загрузчика

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru