Обычно open()
возвращает целое число, а не FILE *
.Вы должны проверить возвращаемое значение> = 0. fopen()
из <stdio.h>
возвращает FILE *
.Кроме того, для записи, fopen()
и fseek()
являются частью стандартной библиотеки C.UNIX open () является частью POSIX.Таким образом, в общем случае fopen()
/ fseek()
более переносим.
Если вы действительно находитесь в пользовательской среде "Unix-like", туда, где это больше не так (т.е. вместо этого у вас есть собственный APIиз unistd.h
) тогда вы не найдете здесь хорошего ответа без предоставления дополнительной информации.Можете ли вы сказать нам, какую ОС вы действительно используете?
Или, как предложил Лютер, проверьте возвращаемое значение lseek()
, если вы используете обычный <unistd.h>
.