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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2010, 22:41   #1
EvilHero
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 12
По умолчанию Исправьте ошибку C++ запись в файл

надо что бы переменной sl присвоилось значение длинны имени(name) в структуре student
почему то ругается на list

Код:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <fstream>
#include <stdio.h>
#include <ctype.h>


using namespace std;


struct student                                // Шаблон структуры 
{
    char name;                            // имя и фамилия
    int year;                                // возраст
    int mark;                                // оценка
};
        vector <student> list;                // вектор данных по группе
        student buffer;                        // Дополнительная структура
        int i, j ;
        char ci;                            //буквенный аналог i
void main (void)
{
    student students;
    {
    do                                        // Заполняем массив структур
        {
            cout <<  "Vvedite imya i familiu  ";
            cin >> students.name;
            cout <<  "Vvedite vozrast ";
            cin >> students.year;
            cout << "Vvedite ocenky  ";
            cin >> students.mark;
            list.push_back (students);
            cout << "Prodoljit' zapolnenie? [y/n]  ";
            cin >> ci;
            cout << endl;
        }
    while(ci!='n') ;
    }
    FILE*f=fopen("d:\db.dat","rb");
    int size=list.size();
    fwrite(&size,sizeof(size),1,f);
        for(unsigned i=0;i<list.size();i++)
        {
            int sl=list[i].name.length()+1;
            fwrite (&sl,sizeof(sl),1,f);
            fwrite (&list[i].name.c_str(),list[i].name.length()+1,1,f);
            fwrite (&list[i].year,sizeof(int),1,f);
            fwrite (&list[i].mark,sizeof(int),1,f);
        }
        fclose(f);
}

Последний раз редактировалось EvilHero; 03.12.2010 в 23:48.
EvilHero вне форума Ответить с цитированием
Старый 03.12.2010, 23:47   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

кому присвоила?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 03.12.2010, 23:52   #3
EvilHero
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 12
По умолчанию

переменная sl должна равняться длине students.name

Последний раз редактировалось EvilHero; 03.12.2010 в 23:57.
EvilHero вне форума Ответить с цитированием
Старый 04.12.2010, 07:44   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
почему то ругается на list
так вектор-то у вас пуст! да и вообще логику программы надо пересматривать, вы сами уже запутались
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 04.12.2010, 11:21   #5
EvilHero
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
так вектор-то у вас пуст! да и вообще логику программы надо пересматривать, вы сами уже запутались
почему не заполняется вектор ? где ошибка тогда ?
EvilHero вне форума Ответить с цитированием
Старый 05.12.2010, 02:40   #6
EvilHero
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 12
По умолчанию

Вот дописал программу, она работает так:
мы создаем список студентов с их именами фамилиями оценкой и возрастом, и записываем в файл db.dat.
далее, мы считываем этот файл и выбираем, что с ним делать, можем отсортировать, добавить студента, удалить, изменить, вывести список на экран и сохранить изменения.

Проверьте пожалуйста на наличие ошибок, и подскажите способ их решения.
пару я уже знаю: в строке № 78 компилятор ругается на list
Код:
fread (list[i].name.c_str(),sl,1,f); //ошибка в list
говорит "аргумент типа "const char*" несовместим с параметром "void*"

Еще я так и не разобрался с проверкой на наличие файла, закоментировал если кто знает как справить буду очень рад.

больше ошибок не заметил, если есть сообщите пожалуйста.

код вставить не могу ибо больше 5000 символов (( прикрепил текстовик.
Вложения
Тип файла: txt lab3.txt (6.0 Кб, 142 просмотров)
EvilHero вне форума Ответить с цитированием
Старый 05.12.2010, 22:09   #7
EvilHero
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 12
По умолчанию

помогите плиз
EvilHero вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись в файл grater83 Общие вопросы Delphi 10 27.12.2009 15:01
Исправьте ошибку пожалуйста Алиса_1515 Помощь студентам 1 03.12.2009 19:12
Запись в файл Lemo Помощь студентам 3 01.03.2009 19:06
Исправьте ошибку в Паскаль!! W_P Паскаль, Turbo Pascal, PascalABC.NET 8 17.03.2008 11:35
Исправьте ошибку в Паскаль!! W_P Помощь студентам 1 16.03.2008 18:29