Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 00:56   #1
marina12
Пользователь
 
Регистрация: 13.02.2013
Сообщений: 28
По умолчанию проблема с fwrite

Здравствуйте!
Столкнулась с такой проблемой,что когда записываю в файл структуры с помощью fwrite, в файл печатаются иероглифы(скорее всего,адрес первого символа строки,который хранится в ячейке структуры...). Как этого можно избежать?Если можно,то объясните пожалуйста на моём примере,который приведен ниже (сохранение записной книжки в файл):
Код:
struct Telo 
{
    char name[50];
    char lastname [60];
    char phone[35]; 
    char birthday [15];
    char adress [150];
    char comments [100];
};
struct Value
{
    Telo telo;
    Value *next;
};

Value *first = NULL; // Указатель на первый элемент списка

void Save()
{
    system("cls");
    char fileName[80]; // Имя файла                                                 
    printf("Enter the name of file for save: ");
    scanf("%s", fileName);
    cin.ignore(60, '\n');
    FILE *f;
    f= fopen(fileName, "wb"); 
    if (!f) 
    {
        printf("Error of opening file for save\n");
        return;
    }
    Value *v; // Указатель на текущий элемент списка
    v = first;
    while (v != NULL) {
        fwrite(v, sizeof(Value),1,f); // Записываем в файл одну структуру 
        v = v->next;
    }
    fclose(f); // Закрываем файл
    printf("notebook save into file\n");
    getch();
    system("cls");
    Menu();
}
marina12 вне форума Ответить с цитированием
Старый 22.05.2013, 08:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в файл печатаются иероглифы
Это не показатель. В файл могут печататься иероглифы, потому что ты неверно заполняешь список (к примеру)
Нужно анализировать отладчиком.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2013, 09:41   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Кстати, в файл нужно писать Telo, а не Value, так как поле next потом не пригодится.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.05.2013, 16:27   #4
marina12
Пользователь
 
Регистрация: 13.02.2013
Сообщений: 28
По умолчанию

мне нужно, чтобы сохраненный файл потом можно было загрузить в книжку, поэтому и пишу value
marina12 вне форума Ответить с цитированием
Старый 22.05.2013, 17:31   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

В поле next хранится адрес следующего элемента. Его нужно инициализировать при загрузке элементов, а не хранить в файле, так как адреса в следующий раз будут другие.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кодировка при записи/считывании в файл/из файла функциям fread и fwrite Niaden Visual C++ 3 29.10.2012 16:18
Как работает fwrite() в данном случае ? Sergey S Общие вопросы C/C++ 2 30.05.2012 07:22
Проблема с fwrite Region27 Общие вопросы C/C++ 5 04.05.2012 17:57
Бинарные файлы. Функция fwrite. Ovis Помощь студентам 0 02.06.2011 13:58
заморочки функций fseek и fwrite tiger() C++ Builder 2 25.04.2011 13:31