странное поведение fopen (); дает неожиданный NULL в случае A и отлично работает в аналогичном случае B

Я сбит с толку тем, как fopen () отвечает на мой код. Обратите внимание, что я использую его для записи двоичных файлов, прочитанных из FPGA. Сценарий такой

  1. Когда я пишу данные в систему на основе FPGA и затем читаю обратно (после обработки), можно сохранить только 307 двоичных файлов, после чего функция fopen () возвращает значение NULL
  2. Когда я читаю только из FPGA (вообще не пишу), тогда он отлично сохраняет все 500 файлов.
  3. Когда я делаю оба случая для записи в файлы .txt, все идет отлично

Случай 1 — это моя проблема и реальная реализация, в которой я нуждаюсь. Поэтому я не могу понять это странное поведение. В нескольких тестах можно быть уверенным, что вся проблема связана со стороной PC / C ++, и FPGA не имеет к этому никакого отношения.

Первый код — это вызов функции, второй код — это функция для записи двоичных файлов.

...
sprintf(fwname, "data/uwpi%d.bin", fnum++);
opfile = fopen(fwname , "w");
rc = sipif_readdata(pInDMA, (40000)*2);
save_binary(pInDMA,  40000, fwname, opfile , fnum);
...

Ниже приведены подробности функции

static ULONG save_binary(void *buf, int bufsize, const char *filename, FILE *fOutFile, int fnum){

// cast our stamp less pointer to a short
short *buf16 = (short *)buf;

fOutFile = fopen(filename, "ab");
if(fOutFile==NULL) {
//comment added to verify my claim
printf("Null value found at file %d\n", fnum);
return -3;  }

printf("fnum is %d\n", fnum);
fwrite(buf, 2, bufsize, fOutFile);
fclose(fOutFile);
return 0;

}

введите описание изображения здесь

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector