Я сбит с толку тем, как fopen () отвечает на мой код. Обратите внимание, что я использую его для записи двоичных файлов, прочитанных из FPGA. Сценарий такой
Случай 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;
}
Задача ещё не решена.
Других решений пока нет …