Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Запись в бинарный файл данных


Автор: Mormishka 18.2.2011, 19:55
Набросал кодя для записи. Гляньте кто нибудь, ничего я не перемудрил?

Код

        for (int time_step=0;time_step<vector2D.at(0).at(0).Cpr->points_.size();++time_step)
        {
            char Name[9]="TIMESTEP";
            fwrite(Name,sizeof(char),8,f);
            char Type[5]="INTE";
            fwrite(Type,sizeof(char),4,f);
            int NumberOfValues=1;
            fwrite(&NumberOfValues,sizeof(int),1,f);
            fwrite(&time_step,sizeof(int),1,f);
            Name="PRESS_PR";
            Type="DOUB";
            fwrite(Name,sizeof(char),8,f);
            fwrite(Type,sizeof(char),4,f);
            for (int i=0;i<vector2D.size();++i) {
                for (int j=0;j<vector2D[i].size();++j)
                {
                    //temp=vector2D.at(i).at(j)->Cpr->[time_step];
                    temp=vector2D[i][j].Cpr->At(time_step).y;
                    fwrite(&temp,sizeof(double),1,f);
                };
            };
        };

жалуется на строку
Код

            Name="PRESS_PR";
            Type="DOUB";


Как присвоить это типу значение?

    9    IntelliSense: выражение должно быть допустимым для изменения левосторонним значением    
    10    IntelliSense: выражение должно быть допустимым для изменения левосторонним значением    
Ошибка    5    error C2440: =: невозможно преобразовать "const char [9]" в "char [9]"    
Ошибка    6    error C2440: =: невозможно преобразовать "const char [5]" в "char [5]"    

Автор: hawk3500 18.2.2011, 20:32
вы пытайтесь присвоить два  разных по типу объекта(почти абсолютно).

сделайте так:

char NameTmp[]="PRESS_PR";
char TypeTmp[]="DOUB";

memcpy(Name,NameTmp,strlen(NameTmp));
memcpy(Type,TypeTmp,strlen(TypeTmp));

Автор: Mormishka 18.2.2011, 21:57
Я открываю файл, а там символы TIMESTEP и тд. 
Это нормально? Там вроде не должно было ничего прочитаться?
Как все таки открывать файл для записи
Код

FILE* f=fopen(FileName, "w+b");

или

Код

FILE* f=fopen(FileName, "wb");


Код

FILE* f=fopen(FileName, "w");
        if (f==NULL)
        {
            printf("Cannot open output file.\n");
        };

Автор: hawk3500 18.2.2011, 22:15
На первую часть вопроса я затрудняюсь ответить, т.к. не знаю что вы конкретно хотите от программы и не вижу всего кода.
На вторую часть вопроса-вот ссылочка с подробным описанием:http://devoid.com.ua/functions-about/c-functions/fopen.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)