Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199

Функция fopen возвращает нулевой указатель (Visual Studio)

19.03.2010, 23:35. Показов 7533. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте)
У меня возникла очень странная проблема.просто мистика.

С чем может быть связано возвращение нулевого указателя в функции fopen.?
Я пишу в винАПИ.По пока с новыми функциями не разобрался(для работы с файлами)
Вот.И тут такое.Путь задан жестко.НО!она открывает его ИНОГДА, а чаще всего НУЛЛ возвращяет.Путь правильный.Потому,что по тому же пути из этого же фаила считывает инфу другая фун-я.ТАм всё норм.Файловый поток после считки закрываю.
Даже не знаю в чем может быть дело. =(

Добавлено через 1 час 20 минут
ТА....всё грусно.
Объясните тогда как работает OpenFile()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2010, 23:35
Ответы с готовыми решениями:

Стандартная функция fopen возвращает не NULL и не значение
Ребят тока начинаю писать на си юзаю fopen, но она возвращает 0xcccccc, т.е. не NULL и не указатель на структуру........ что это за бред ...

Функция принимает указатель на void и возвращает указатель на int
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

Функция для транслитерации строки возвращает нулевой результат
Написал следующую функцию для транслитерации букв, но результат никакой не показывает, пусто, что ни так? Помогите разобраться ...

36
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 00:02
Студворк — интернет-сервис помощи студентам
Слушай, можно открыть файл fopen (), CreateFile (), OpenFile ()

ПО-моему, во всех этих случаях, первый параметр у всех трёх функций- имя файла (в том случае если файл лежит водной директории с твоей прогой, но это частный случай, его не рассматриваем) или же ПУТЬ К ФАЙЛУ. При чём путь ПОЛНЫЙ. Который тебе возвертает (вернее, не возвертает, по-моему, GetOpenFileName)

Ты передаёшь невесть что (сгенерированное GetOpenFileName) первым параметром в одну из этих функций (fopen (), допустим), она ни фига не открывает, естессно, выдаёт ноль.

И ты после этого не видишь связи между GetOpenFileName и открытием других файлов?
0
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 00:13  [ТС]
ааааааа.Да нет же.
вот что я передаю в fopen!!

C++
1
fl=fopen("dbase.module/Vodafone_McLaren_Mercedes.txt","w");
Независимо от того что там сгенерировал этот тупой ОпенФилеНАме.
Я вобще не понимаю,как она может делать массивы "C:\xxx\yyy\" если блин '\' - это вобще часть управляющей конструкции.НО это ладно.я пытаюсь до вас донести вот что.
C++
1
2
3
4
5
6
7
8
9
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
 FILE *fl;
fl=fopen("dbase.module/Vodafone_McLaren_Mercedes.txt","w");//О ЧУДО ВСЕ РАБОТАЕТ
        return 0;
}

А вот так.fl=0x00000000 почему?!

C++
1
2
3
4
5
6
7
8
9
10
11
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
 FILE *fl;
char pht[MAX_PATH];
ShowOpenDialog(NULL,pht,"Выберите файл","",".bmp");
fl=fopen("dbase.module/Vodafone_McLaren_Mercedes.txt","w");//О ГОСПАДИ НУЛЛ?!!!!как так!!!!!???
        return 0;
}
Почему??"!! массив pht мне нужен не для этих целей! я его использую так :
C++
1
hBmp =(HBITMAP) LoadImage(NULL, pht, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
- и так всё прекрасно работает!
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 00:25
Слушай, я бы хотел поковыряться, но мне этот путь непонятен:
"dbase.module/Vodafone_McLaren_Mercedes.txt"

Это какой-то экзотический путь.
Можешь удостоверить что всё так как ты сказал, но путь пусть воттак как-нибудь
выглядит,попроще то есть:
C++
1
fl=fopen("E:\\file.txt","w");
1
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 00:38  [ТС]
ВОт!!!!вот это была умная мысль!!!!
только незнаю почему вы так любите '\'.

ВОт так прошли все тесты удачно(файл создан)

C++
1
FILE *fl=fopen("C:/Downloads/file.txt","w+");
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 00:39
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <windows.h>
#include <Winuser.h>
 
char *ShowOpenDialog(HWND HWndOwner, char *FileName, char *Title,char *InitialDir, char *Filter) { 
    OPENFILENAME ofn; 
    ZeroMemory(&ofn, sizeof(OPENFILENAME)); 
 
    char szFile[MAX_PATH]; 
        char oFile[MAX_PATH];
    ZeroMemory(szFile, MAX_PATH); 
 
    // инициализация OPENFILENAME 
    ofn.lStructSize = sizeof(OPENFILENAME); 
    ofn.hwndOwner = HWndOwner; 
    ofn.lpstrFile = (LPSTR)szFile; 
    ofn.nMaxFile = MAX_PATH; 
    ofn.lpstrFilter =(LPSTR) Filter; 
    ofn.nFilterIndex = 0; 
    ofn.lpstrTitle = (LPSTR)Title; 
    ofn.lpstrInitialDir =(LPSTR) InitialDir; 
    ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST; 
 
    // Отображаем окно Open dialog. 
    if (GetOpenFileName ((LPOPENFILENAMEW)&ofn)) 
    { 
        //strcpy(FileName, (char *)ofn.lpstrFile);
                memcpy(FileName,ofn.lpstrFile,MAX_PATH);
                //copy_rc(FileName,oFile,'\','\');
                FileName=ofn.lpstrFile;
        return ofn.lpstrFile; 
    } 
    else {
         }
    return false; 
}
 
 
int  main (){
 
FILE *fl;
 
char pht[256];
ShowOpenDialog(NULL,pht,"Выберите файл","",".bmp");
 
 
if (fl=fopen("E:\\file.txt","w")) {
 MessageBox (0, "всё работает", "всё работает", 0);
}
 
else {
 MessageBox (0, "всё плохо", "всё плохо", 0);
}
 
 
 
 
 
        return 0;
}
Парень, вот твой код.
Я лишь упростил объявление main, чтобы компилятор хавал
Как видишь, выводится объявление "Всё работает"

Да, я открываю свой файл , уж больно мне твой путь непонятен.
С окном, созданным GetOpenFileName не работаю, как только он появляется, жму на крестик.
1
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 00:40  [ТС]
Блин, как я счастлив
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 00:41
Хм... Странно, что ты не используешь MessageBox для проверки. Должен знать вроде.

Добавлено через 20 секунд
А чё было-то? Я не понял
0
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 00:47  [ТС]
Только теперь вопрос.Как же мне сохранять фаилы исходя из папки где лежит программа? ведь заранее не известно , где она будет.
А если я хочу сохранить например(у меня)
C:/Projects/one/dbase.module/.....

Но если её переместить этот путь уже будет не верен, понимаете о чем я?

Добавлено через 58 секунд
Было то,что краткий путь переставал работать после вызова опенфиленаме =((((( вот обдино ((( столько дней убил.

Добавлено через 2 минуты
ЗЫ я использовал для проверки точки остановки
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 00:51
Ты меня не путай. Ты хочешь сказать, что работаешь в винде, и у тебя в текущей директоРии есть папка
dbase.module (именно так, с точкой)

В которой, в свою очередь, есть текстовый файл

Vodafone_McLaren_Mercedes.txt?

И вся эта херь соединена обратным слэшем и худо бедно
Vodafone_McLaren_Mercedes.txt

открывался, так что ли?
Ну ни фига себе... Век живи, век учись. Если дело в этом, ты бы прекратил экзотику всё таки.
Обратный слэш для линя, точка только перед расширением файла, как-то так... Чтобы головняков не было...
0
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 00:56  [ТС]
окэй.Буду знать)))) это была плохая идея так назвать папку.

Добавлено через 3 минуты
Насчёт обратного слэша...
C:\\Downloads\file.txt -нэ
C:\\Downloads/file.txt -да
C:/Downloads/file.txt -да
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 01:04
Цитата Сообщение от GAME Посмотреть сообщение
Только теперь вопрос.Как же мне сохранять фаилы исходя из папки где лежит программа? ведь заранее не известно , где она будет.
А если я хочу сохранить например(у меня)
C:/Projects/one/dbase.module/.....

Но если её переместить этот путь уже будет не верен, понимаете о чем я?
Нет, не понимаю. Тебе нужно некоторый файл сохранить в папке с прогой, причём ЗАРАНЕЕ НЕИЗВЕСТНО, в какой папке эта прога будет лежать.

Так?
Если так, то без проблем. Но не сейчас, завтра. Сейчас спать.

Добавлено через 1 минуту
Цитата Сообщение от GAME Посмотреть сообщение
C:\\Downloads\file.txt
Чем плохо?

Добавлено через 1 минуту
Надо так: C:\\Downloads\\file.txt

Добавлено через 35 секунд
Понимаешь, люди могут подумать, что у тебя линь... Зачем тебе непонятки всякие?
1
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 01:06  [ТС]
О ДА! я понял в чем была ПРОБЛЕМА. в том что я Лол....как так.
С какова меня потянуло имя папки с точкой сделать !!!!аахахаха =(((((
стоило заменить точку на '_' и с таким путём
C++
1
"dbase_module/Vodafone_McLaren_Mercedes.txt"
всё шикарно работаетЁ!!!!!
kravam, спасибо огромное , сам бы я никогда не понял этой фатальной ошибки!!!!
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 01:08
ТАк, ладно, тебе, кажись, вот эта api-функция нужна
0
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 01:12  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
Надо так: C:\\Downloads\\file.txt
Для полного пути да, а вот для "кусочного",опытным путем выявлено
C++
1
"dbase_module\\Vodafone_McLaren_Mercedes.txt"
- не создает

Добавлено через 2 минуты
Хотя вот так норм
C++
1
"dbase_module//Vodafone_McLaren_Mercedes.txt"
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 01:13
Ну, может быть.
...Я бы, не мудрствуя лукаво, использовал

C++
1
system ("CD")
ВЫводит имя текущей директории.
Чё хошь с этим именем делай.
0
 Аватар для GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
23.03.2010, 01:14  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
Ну, может быть.
...Я бы, не мудрствуя лукаво, использовал
ок.попробую)


не знаю почему но работает всё что вы говорите по поводу слэшей только в таком варианте '//' а не '\\', незнаю может компилятор такой

Не по теме:

пойду спать)

0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.03.2010, 01:16
Мда... Да нет, всё ничё, сам понимаешь, непринципиально, куда палка наклонена (лишь бы работало). Но так обычно в лине делается. Чел кинет взгляд на код- ага, у тебя линь. И пройдёт мимо. Только из-за этого.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2010, 01:16

Функция не возвращает указатель на структуру
как зделать. пробывал так typedef struct str str ; struct str{ /* */ }

Функция min_element() возвращает указатель на ноль
Необходимо найти максимальный элемент среди минимальных в двумерном массиве. Сначала ищу минимальный элемент всего массива с помощью...

Функция формирует массив и возвращает указатель на него
Задание: написать функцию с аргументами: вещественное х, целое n. Функция формирует массив у: уk=\frac{{x}^{2k}}{k!} k=0,1,..,n-1 и...

Как функция возвращает указатель на структуру в массив указателей
Друзья, следующий вопрос, у меня есть функция, которая: создает указатель на структуру-&gt; выделяет память-&gt; заполняет из файла-&gt;...

Функция, получающая подстроку, возвращает испорченный указатель на строку
Пытаюсь выделить подстроку в Microsoft Visual C++ 2013, чтобы убрать путь к файлу и оставить только имя файла. wchar_t *...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru