Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
1

Функция сохраняет кое что в бинарник, но проблема в том что указатель на файл все время оказывается пустой

23.04.2014, 20:19. Просмотров 1112. Ответов 27
Метки нет (Все метки)

у меня функция сохраняет кое что в бинарник, но проблема в том что указатель на файл все время оказывается пустой о_О

я пишу что то типа:
C
1
2
3
4
5
void test(char *path)
{
FILE *fp = fopen(path, "wb");
...
}
и в итоге указатель все время пустой почему???
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 20:19
Ответы с готовыми решениями:

у меня есть прога. но минус в том, что она не сохраняет файл(
#include <stdio.h> // Подключение головного файла для работы с вводом/выводом #include <windows.h>...

Динамический файл и еще кое-что...
1) Создать массив динамической памяти A(n). Найти число четных, положительных элементов и их сумму....

Считая, что мужчин и женщин одинаковое число, определите, что дальтоником оказывается мужчина
4) Известно, что 5% мужчин и 0.25 всех женщин дальтоники. Считая, что мужчин и женщин одинаковое...

Проблема в том что не выводит полученный вектор
Задание : В целочисленном векторе vectorn найти второй по порядку отрицательный и предпоследний...

Проблема в том, что MessageBox не правильно работает!
{ public partial class Form1 : Form { public List<string> qa = new...

27
easybudda
Модератор
Эксперт CЭксперт С++
10247 / 6137 / 1544
Регистрация: 25.07.2009
Сообщений: 11,678
23.04.2014, 20:31 2
Цитата Сообщение от GetHelp Посмотреть сообщение
почему?
в заголовки
C
1
#include <stdlib.h>
после
Цитата Сообщение от GetHelp Посмотреть сообщение
FILE *fp = fopen(path, "wb");
C
1
2
3
4
if ( ! fp ) {
    perror("fopen");
    return;
}
посмотрите, что напишет.
0
Байт
Эксперт C
20294 / 12858 / 2689
Регистрация: 24.12.2010
Сообщений: 26,856
23.04.2014, 20:35 3
Цитата Сообщение от GetHelp Посмотреть сообщение
почему?
Первым делом посмотри, чему равен path (напечатай или там отладчиком) и нам покажи.
И поясни, что значит пустой? == NULL ?
0
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 20:40  [ТС] 4
easybudda, да есть там все в заголовке... написало "Permission denied" и что это значит? О_о

Добавлено через 1 минуту
Байт, а не все ли равно чему он равен, функция в любом случае должна по идее возвращать не NULL, потому что она пересоздает файл... ну равен он скажем settings.dat, да пустой это == NULL
0
easybudda
Модератор
Эксперт CЭксперт С++
10247 / 6137 / 1544
Регистрация: 25.07.2009
Сообщений: 11,678
23.04.2014, 20:45 5
Цитата Сообщение от GetHelp Посмотреть сообщение
написало "Permission denied" и что это значит?
А в словарике посмотреть - не? "Доступ запрещён" это значит. Почему - вопрос...
0
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 20:47  [ТС] 6
easybudda, ну так в этом то весь и вопрос
0
Байт
Эксперт C
20294 / 12858 / 2689
Регистрация: 24.12.2010
Сообщений: 26,856
23.04.2014, 21:03 7
Цитата Сообщение от GetHelp Посмотреть сообщение
Байт, а не все ли равно чему он равен,
Вовсе не все равно. Например, если в имени есть звездочки или вопросики, то он может и не открыться... Т.е. своим вопросом снял самые идиотские ситуации.
Цитата Сообщение от GetHelp Посмотреть сообщение
ну равен он скажем settings.dat
Ну вот теперь можно и подумать. Скорее всего, он уже кем-то открыт, да не закрыт (твоей же программой, которая его читала). Если это не так, нужно думать о правах доступа. Некоторые Оси запрещают именно тебе запись в эту папку, т.е. создание файлов. Причин может быть много... Удачи!
0
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 21:15  [ТС] 8
Байт, нет нет, этого файла вообще еще не существует, я только начал писать эту прогу, написал функцию сохранения, но она не работает вот... и я сомневаюсь что тут проблема в правах доступа... работаю из под админки, мне кажется что что то не так в коде... возможно что то с указателями... ну например я вижу в отладчике что path = "settings.dat" а *path = "s", а подаю я просто path безо всяких * или &, ну короче я немного не люблю тему указателей вечно в них путаюсь... думаю искать причину где то в той степи надо...

Добавлено через 6 минут
ps FILE *fopen(const char *fname, const char *mode);
0
Байт
Эксперт C
20294 / 12858 / 2689
Регистрация: 24.12.2010
Сообщений: 26,856
23.04.2014, 21:16 9
Цитата Сообщение от GetHelp Посмотреть сообщение
думаю искать причину где то в той степи надо...
Покажи обращение к функции test, вообще немного побольше кода.
Цитата Сообщение от GetHelp Посмотреть сообщение
вижу в отладчике что path = "settings.dat" а *path = "s"
Все логично.
Цитата Сообщение от GetHelp Посмотреть сообщение
короче я немного не люблю тему указателей вечно в них путаюсь...
Взялся за Си - придется разобраться. Потом не пожалеешь
0
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 21:17  [ТС] 10
ну примерно такое test("settings.dat")
0
ValeryS
Модератор
7476 / 5661 / 723
Регистрация: 14.02.2011
Сообщений: 19,363
Завершенные тесты: 1
23.04.2014, 21:33 11
Лучший ответ Сообщение было отмечено GetHelp как решение

Решение

Цитата Сообщение от GetHelp Посмотреть сообщение
о она не работает вот... и я сомневаюсь что тут проблема в правах доступа...
а зря сомневаешься
дело именно в доступе
попробуй открыть с ключом "ab"
сколько раз вызывается test("settings.dat")?
у директории есть "только чтение" ?

Добавлено через 2 минуты
Цитата Сообщение от GetHelp Посмотреть сообщение
по идее возвращать не NULL, потому что она пересоздает файл...
как это стыкуется, с этим?
Цитата Сообщение от GetHelp Посмотреть сообщение
этого файла вообще еще не существует,
2
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 21:40  [ТС] 12
ValeryS, как ни странно помогло спс попробовал не со студии а чисто с экзешника с правами админа запустить и норм все файл появился

Добавлено через 4 минуты
блин только как же мне теперь отлаживать, если норм работает только с запуском с админкой?
0
ValeryS
Модератор
7476 / 5661 / 723
Регистрация: 14.02.2011
Сообщений: 19,363
Завершенные тесты: 1
23.04.2014, 21:42 13
Цитата Сообщение от GetHelp Посмотреть сообщение
попробовал не со студии а чисто с экзешника с правами админа запустить и норм все файл появился
дело может быть в том что студия директорию предоставляет для программ не Debig /Realise а ту где лежат исходные файлы
и скорее всего она заблокировала директорию
меняется это дело в настройках проекта
1
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 21:45  [ТС] 14
ValeryS, а где конкретно в настройках проекта и что менять?
0
ValeryS
Модератор
7476 / 5661 / 723
Регистрация: 14.02.2011
Сообщений: 19,363
Завершенные тесты: 1
23.04.2014, 21:46 15
"свойства"- "отладка"- "рабочий каталог"
у меня русская 2008, но по аналогии посмотри
0
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 21:47  [ТС] 16
ну у меня там написано $(ProjectDir) а что должно быть?
0
Байт
Эксперт C
20294 / 12858 / 2689
Регистрация: 24.12.2010
Сообщений: 26,856
23.04.2014, 21:49 17
Цитата Сообщение от ValeryS Посмотреть сообщение
дело может быть в том что студия...
Всю жизнь, как мог, от студии бегал. Вы мне добавили прыти.
0
ValeryS
Модератор
7476 / 5661 / 723
Регистрация: 14.02.2011
Сообщений: 19,363
Завершенные тесты: 1
23.04.2014, 21:52 18
Цитата Сообщение от GetHelp Посмотреть сообщение
ну у меня там написано $(ProjectDir) а что должно быть?
а что хочешь
можешь создать свою папку и указать её, можешь указать Debig(для отладки), Release(для готовой) что бы твой файл создавался рядом с екзешником
чтобы не писать полный путь, рекомендую "обзор"
нажмешь на стрелочку, рядом с полем, выпадет меню, нажимаешь обзор и выбираешь нужную тебе папку
0
GetHelp
60 / 61 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
23.04.2014, 21:55  [ТС] 19
да так вообще то и есть... исходники и экзешник находятся в разных папках и бинарник создается рядом с экзешником... это так по умолчанию все создается... просто эта папка с экзешником на ней атрибут для чтения, я его снимаю, а он опять появляется сам...
0
ValeryS
Модератор
7476 / 5661 / 723
Регистрация: 14.02.2011
Сообщений: 19,363
Завершенные тесты: 1
23.04.2014, 21:59 20
Цитата Сообщение от Байт Посмотреть сообщение
Всю жизнь, как мог, от студии бегал.
"Просто не умеешь готовить"(с)
для программирования для винды по моему самое то
неплохой оптимизатор, код легче и быстрее чем у Борланда
ну а для консоли, тут да, конкуренция побольше будет

хотя я последнее время пишу только для микроконтроллеров, а там совершено другой подход

Добавлено через 58 секунд
Цитата Сообщение от GetHelp Посмотреть сообщение
я его снимаю, а он опять появляется сам...
сейчас попробую и обскажу
0
23.04.2014, 21:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2014, 21:59

целый день убил, кое-что накалакял, но это все неправильно.
написать программу на чистом Си Мерси боку

проблема в том,что программа запоминает лишь 1 символ из слова
Всем привет!Вопрос простенький,делаю лабу в с++ тема классы.Код вроде реализовал все верно...

Узнать о том, что на комьютере пользователем было изменено время
Такая задача: два(или больше) экземпляра программы запущены на разных компьютерах, где системное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru