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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Записывается в файл fwrite непонятно что 
V
    Опции темы
Master_
Дата 4.10.2008, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
const int n=3;
struct student
{
    char name[20];
    int  year;
    char sex[3];
};
student gr[n];
int i,j;

int main()
{
    FILE *OutFile;

    for (i=0; i<=n; i++)
    {
        cout << "surname:";
        cin >> gr[i].name;

        cout << "born year:";
        cin >> gr[i].year;

        cout << "sex:";
        cin >> gr[i].sex;
    }
    cout << endl;

    if ( (OutFile=fopen("data.txt", "w+")) == NULL )
    {
        cout << "Error on open file data.txt";
        return 1;
    }
    for (i=0; i<=n; i++)
    {
        fwrite(&gr[i], sizeof(student), 1, OutFile);
    }
    fclose(OutFile);

    int  temp_year;
    char temp_sex[3];
    char temp_name[20];
    for (j=0; j<n;j++)
    {
        for (i=0; i<n;i++)
        {
            if ( gr[i].year > gr[i+1].year )
            {
                temp_year = gr[i].year;                    
                strcpy_s(temp_sex,gr[i].sex);
                strcpy_s(temp_name,gr[i].name);

                gr[i].year = gr[i+1].year;
                strcpy_s(gr[i].sex,gr[i+1].sex);
                strcpy_s(gr[i].name,gr[i+1].name);

                gr[i+1].year=temp_year;        
                strcpy_s(gr[i+1].sex,temp_sex);
                strcpy_s(gr[i+1].name,temp_name);
            }
        }
    }
    OutFile = fopen("res.txt", "w+");
    for (i=0; i<=n; i++)
        fwrite(&gr[i], sizeof(student), 1, OutFile);

    fclose(OutFile);

    _getch();
    return 0;
}


В итоге получаю что-то непонятное в файлах: 


В чем может бть проблема? Фамилия и пол прописываются вроде нормально, но год непонятно что за, да и пробелы между ними огромны...

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  data.txt 0,11 Kb
PM   Вверх
J0ker
Дата 4.10.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 9
Всего: 14



а как вы хотите что-бы у вас int записывался? а пробелы - так у вас под name 20 байт отведено 


--------------------
user posted image
PM MAIL   Вверх
Master_
Дата 4.10.2008, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да я думал нужно в виде чисел в файле.
Я правда не пробовал считывать данные из файла, получается это нормально?
Но чисто визуально через блокнот смотреть не получится?
PM   Вверх
J0ker
Дата 4.10.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 9
Всего: 14



Цитата(Master_ @  4.10.2008,  22:37 Найти цитируемый пост)
Я правда не пробовал считывать данные из файла, получается это нормально?

в общем случае нет - файл и на чтение и на запись тогда надо открывать в бинарном режиме - w+b, rb.

Цитата(Master_ @  4.10.2008,  22:37 Найти цитируемый пост)
Но чисто визуально через блокнот смотреть не получится? 

в таком виде - нет. Вы записываете данные как они представлены в памяти.


--------------------
user posted image
PM MAIL   Вверх
dark_religion
Дата 8.10.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



fwrite(&gr[i], sizeof(student), 1, OutFile); 
почему &? по моему надо без &
И вообще разве может структура выводится? через фрайт? Разве не по отдельности ее поля надо выводить? от куда фрайт знает про эту стркутуру...

Это сообщение отредактировал(а) dark_religion - 8.10.2008, 20:50
PM MAIL   Вверх
J0ker
Дата 8.10.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 9
Всего: 14



Цитата(dark_religion @  8.10.2008,  20:47 Найти цитируемый пост)
почему &? по моему надо без &

&gr[i] - адрес i-того элемента

Цитата(dark_religion @  8.10.2008,  20:47 Найти цитируемый пост)
И вообще разве может структура выводится? через фрайт? Разве не по отдельности ее поля надо выводить? от куда фрайт знает про эту стркутуру...

выводится не структура а область памяти по адресу &gr[i] размером sizeof(student)



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

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

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

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

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


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

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


 




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


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

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