Стандартная функция 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 для последующего использования или резервного копирования.