Я хочу обрезать файл, например, setsizeof () с ФАЙЛОМ * Я разрабатываю против Windows 2003

#include <unistd.h> there's no such lib

Как я могу это сделать freopen () обрезает все данные vut не пишет - получение ошибки EINVAL некоторая помощь ?????

2
sofr 17 Май 2009 в 12:53

2 ответа

Лучший ответ

Функция _chsize лучше справляется с этой задачей, она заставляет размер fd ans изменить на

3
sofr 17 Май 2009 в 18:12

В стандарте C есть несколько (примерно 20) файлов заголовков, и unistd не входит в их число (это заголовок POSIX / UNIX95 / UNIX98). Таким образом, поставщик не обязан его предоставлять. Ни C89, ни C99 не имеют единого обязательного заголовочного файла.

Самый простой способ обрезать файл - повторно открыть его в режиме записи (при условии, что у вас есть имя файла).

fclose (fh);
fh = fopen ("file_name", "w");

Если все, что у вас есть, это дескриптор файла, вам нужно использовать freopen(). Вы получите EINVAL, только если установлен неправильный режим. Вы не можете изменить режим, кроме как в соответствии со следующей таблицей:

r        -> r
w a      -> a w
r+ w+ a+ -> any mode

Дополнительные сведения см. В man freopen.

2
paxdiablo 17 Май 2009 в 13:34