Стандартная функция fopen возвращает не NULL и не значение - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребят тока начинаю писать на си юзаю fopen, но она возвращает 0xcccccc, т.е. не NULL и не указатель на структуру........ что это за бред
pFile = fopen ("myfile.txt", "r");
if(pFile == NULL) {
проверка на NULL не сработает, в тоже время члены структуры не существуют.... и программа зависает, при дальнейших вызова fread и тд

Решение задачи: «Стандартная функция 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);

Объяснение кода листинга программы

  1. Стандартная функция fopen возвращает не NULL и не значение NULL.
  2. Задача кода - записать содержимое редактора RichEdit в файл myfile.rtf.
  3. Код использует функцию StreamIn класса RichEdit для чтения содержимого редактора RichEdit.
  4. SF_RTF - это константа, которая указывает формат, в котором должен быть прочитан текст.
  5. MyStreamInCallback - это обратный вызов, который используется функцией StreamIn для чтения данных из файла.
  6. CFile - это объект, который представляет файл, открытый для чтения.
  7. Read - это метод объекта CFile, который считывает данные из файла.
  8. *pcb - это параметр обратного вызова, который указывает количество считанных байтов.
  9. pbBuff - это параметр обратного вызова, который указывает буфер, в который считываются данные.
  10. cb - это параметр обратного вызова, который указывает размер буфера в байтах.
  11. dwCookie - это параметр обратного вызова, который указывает на объект, который считывает данные.
  12. pfnCallback - это параметр обратного вызова, который указывает на функцию обратного вызова, которую следует вызвать для чтения данных.
  13. В данном случае, обратный вызов MyStreamInCallback используется для чтения данных из файла myfile.rtf.
  14. В методе MyStreamInCallback, объект CFile* pFile получается из параметра dwCookie.
  15. Затем, метод Read объекта CFile считывает данные из файла в буфер pbBuff.
  16. Количество считанных байтов сохраняется в параметре *pcb.
  17. Значение 0 возвращается из функции обратного вызова.
  18. В результате, функция StreamIn класса RichEdit считывает содержимое редактора RichEdit в буфер, а затем передает его функции обратного вызова MyStreamInCallback для записи в файл myfile.rtf.
  19. В результате, содержимое редактора RichEdit записывается в файл myfile.rtf.
  20. Это может быть полезно, например, для сохранения содержимого редактора RichEdit для последующего использования или резервного копирования.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы