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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2013, 14:46   #1
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию Проблема с сохранением в файл. Си.

написал курсовую, вроде все работало раньше, а сейчас сохраняет пустой файл (курсовая по теме бд), все проверил так и не врубился что не так посмотрите пожалуйста, все во вложении
Вложения
Тип файла: rar KR_2S.rar (3.20 Мб, 9 просмотров)
NewLamer&Programer вне форума Ответить с цитированием
Старый 09.06.2013, 14:57   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Код:
int Save(TPhoneBook *PB, int COUNT)
{
    FILE *fp;
    if((fp = fopen(FileName, "wb")) == NULL) return 0;
    fwrite(PB, sizeof(*PB), COUNT, fp);
    fclose(fp);
}
На сколько я понимаю, эта функция у вас сохраняет данные в файл... Так?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 09.06.2013, 15:04   #3
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Код:
int Save(TPhoneBook *PB, int COUNT)
{
    FILE *fp;
    if((fp = fopen(FileName, "wb")) == NULL) return 0;
    fwrite(PB, sizeof(*PB), COUNT, fp);
    fclose(fp);
}
На сколько я понимаю, эта функция у вас сохраняет данные в файл... Так?
совершенно верно
NewLamer&Programer вне форума Ответить с цитированием
Старый 09.06.2013, 15:22   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Вы не вняли моим замечаниям:
1) Menu(&PB, &COUNT); - чтобы менялись те переменные, что объявлены в main
если передать просто PB, то free(PB) - бессмысленная операция
2) Add не меняет счетчик COUNT
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.06.2013, 15:31   #5
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Вы не вняли моим замечаниям:
1) Menu(&PB, &COUNT); - чтобы менялись те переменные, что объявлены в main
если передать просто PB, то free(PB) - бессмысленная операция
2) Add не меняет счетчик COUNT
вы как всегда правы я не думал что это важно... никогда наверное не пойму как работать с этими указателями... в делфи работал никогда их не использовал и не знал про них, а тут... везде уже... подскажите что как исправить? Add взял из прошлой темы вашего сообщения, сохраняет не пустой файл, но после загрузки не отображает ничего по ShowAll а Menu? и что еще и как исправить?

вот, немного переделал эту путаницу с указателями, чутка подразобрался, но все равно есть ошибки (при компиляции), помогите все исправить
п.с. кстате объясните что значит **PB??? что одной * мало чтоли?
Вложения
Тип файла: rar KR_2S.rar (3.14 Мб, 5 просмотров)

Последний раз редактировалось Stilet; 09.06.2013 в 16:20.
NewLamer&Programer вне форума Ответить с цитированием
Старый 09.06.2013, 16:02   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Load тоже не изменяет COUNT.
С указателями все просто:
Если не планируем менять внутри функции, то передаем просто так (в упрощенном случае). Если планируем менять, то добавляем звездочку. Если изначально передаем массив, то есть указатель на начало массива элементов, то делаем указатель на указатель.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.06.2013, 16:05   #7
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Load тоже не изменяет COUNT.
С указателями все просто:
Если не планируем менять внутри функции, то передаем просто так (в упрощенном случае). Если планируем менять, то добавляем звездочку. Если изначально передаем массив, то есть указатель на начало массива элементов, то делаем указатель на указатель.
переделал Load посмотрите предыдущее вложение
ну как то вроде в общем понял -_- (очень уж запутанно для меня)
NewLamer&Programer вне форума Ответить с цитированием
Старый 09.06.2013, 16:56   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Насчет ошибок компиляции - прототипы функций в h-файле и их заголовки в реализации начали расходиться.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.06.2013, 17:15   #9
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Насчет ошибок компиляции - прототипы функций в h-файле и их заголовки в реализации начали расходиться.
так и есть спасибо поправил, вроде все работает...
NewLamer&Programer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из XLS в MDB файл с сохранением структуры БД artemavd БД в Delphi 3 23.10.2011 09:39
ошибка в коде с сохранением в файл в Delphi TaYgA Помощь студентам 3 22.11.2009 19:35
(VB) Проблема с сохранением phantom4eg Помощь студентам 0 16.09.2009 21:45
Помогите с сохранением вектора в файл slonik123 Общие вопросы C/C++ 0 15.05.2009 17:48
Проблема с сохранением БД! Disday БД в Delphi 4 21.04.2008 00:54