Стандартная функция fopen возвращает не NULL и не значение - C (СИ)
Формулировка задачи:
Ребят тока начинаю писать на си
юзаю fopen, но она возвращает 0xcccccc, т.е. не NULL и не указатель на структуру........ что это за бред
проверка на NULL не сработает, в тоже время члены структуры не существуют.... и программа зависает, при дальнейших вызова fread и тд
pFile = fopen ("myfile.txt", "r"); if(pFile == NULL) {
Решение задачи: «Стандартная функция fopen возвращает не NULL и не значение»
textual
Листинг программы
// My callback procedure that writes the rich edit control contents // to a file. static DWORD CALLBACK MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { CFile* pFile = (CFile*) dwCookie; *pcb = pFile->Read(pbBuff, cb); return 0; } // The example code. // The pointer to my rich edit control. extern CRichEditCtrl* pmyRichEditCtrl; // The file from which to load the contents of the rich edit control. CFile cFile(TEXT("myfile.rtf"), CFile::modeRead); EDITSTREAM es; es.dwCookie = (DWORD) &cFile; es.pfnCallback = MyStreamInCallback; pmyRichEditCtrl->StreamIn(SF_RTF, es);
Объяснение кода листинга программы
- Стандартная функция fopen возвращает не NULL и не значение NULL.
- Задача кода - записать содержимое редактора RichEdit в файл
myfile.rtf
. - Код использует функцию StreamIn класса RichEdit для чтения содержимого редактора RichEdit.
- SF_RTF - это константа, которая указывает формат, в котором должен быть прочитан текст.
- MyStreamInCallback - это обратный вызов, который используется функцией StreamIn для чтения данных из файла.
- CFile - это объект, который представляет файл, открытый для чтения.
- Read - это метод объекта CFile, который считывает данные из файла.
- *pcb - это параметр обратного вызова, который указывает количество считанных байтов.
- pbBuff - это параметр обратного вызова, который указывает буфер, в который считываются данные.
- cb - это параметр обратного вызова, который указывает размер буфера в байтах.
- dwCookie - это параметр обратного вызова, который указывает на объект, который считывает данные.
- pfnCallback - это параметр обратного вызова, который указывает на функцию обратного вызова, которую следует вызвать для чтения данных.
- В данном случае, обратный вызов MyStreamInCallback используется для чтения данных из файла
myfile.rtf
. - В методе MyStreamInCallback, объект CFile* pFile получается из параметра dwCookie.
- Затем, метод Read объекта CFile считывает данные из файла в буфер pbBuff.
- Количество считанных байтов сохраняется в параметре *pcb.
- Значение 0 возвращается из функции обратного вызова.
- В результате, функция StreamIn класса RichEdit считывает содержимое редактора RichEdit в буфер, а затем передает его функции обратного вызова MyStreamInCallback для записи в файл
myfile.rtf
. - В результате, содержимое редактора RichEdit записывается в файл
myfile.rtf
. - Это может быть полезно, например, для сохранения содержимого редактора RichEdit для последующего использования или резервного копирования.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д