Как удалить файл в си
Перейти к содержимому

Как удалить файл в си

  • автор:

Удаление файлов

Функция remove() удаляет файлы. Она имеет следующий прототип:

int remove(const char *имя_файла);

В случае удачного выполнения она возвращает ноль, а в случае неудачного — не ноль.

Следующая программа использует remove() для удаления файла, определяемого пользователем:

/* пример использования remove() */
#include
int main(void)
char fname[80];
printf («Name of file to remove: «);
gets(fname);
if(remove(fname)) printf(«Error removing file»);
return 1;
>
else return 0;
>

Функция remove

Функция remove удаляет файл, имя которого указано в параметре fname . Эта операция производится непосредственно с файлом, нет потоков, участвующих в операции удаления.

Параметры:

  • fname
    Cи-строка, содержащая имя файла, который необходимо удалить. Этот параметр должен соответствовать правилам именования файлов в используемой системе, и может включать в себя путь, если система поддерживает его.

Возвращаемое значение

Если файл успешно удален, функция возвращает нулевое значение.
В случае ошибки, возвращается ненулевое значение и макрос ERRNO инициализируется соответствующим кодом ошибки.

Ошибка — числовое значение, представляющее тип сбоя.

Строка, интерпретирующая это значение может быть выведена на стандартный поток ошибок при вызове функции perror .

Пример: исходный код программы

// пример использования функции: remove для удаления файла file.txt #include // для оператора cout #include // для функции remove int main () < if( remove( "file.txt" ) != 0 ) // удаление файла file.txt std::cout

Пример работы программы

Если файл file.txt существовал до запуска программы, то файл будет удален, и это сообщение будет записано в стандартный вывод:

CppStudio.com
Файл успешно удален

В противном случае, сообщение, похожее на это будет записано на стандартный вывод:

remove , _wremove

path
Путь к файлу, который требуется удалить.

Возвращаемое значение

Каждая из этих функций возвращает 0, если файл был успешно удален. В противном случае возвращается значение -1 и задает errno значение , указывающее EACCES , что путь указывает файл, доступный только для чтения, указывает каталог или файл открыт или указывает ENOENT , что имя файла или путь не найден.

Дополнительные сведения о кодах возврата см. в разделе errno , _doserrno _sys_errlist и _sys_nerr .

Замечания

Функция remove удаляет файл, path указанный в . _wremove , является широкой символьной версией _remove ; path аргумент _wremove является строкой с широким символом. Поведение _wremove и _remove идентично в противном случае. Чтобы можно было удалить файл, все дескрипторы файлов должны быть закрыты.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью «Глобальное состояние» в CRT.

Сопоставления подпрограмм универсального текста

TCHAR.H Обычной _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tremove remove remove _wremove

Требования

Маршрут Обязательный заголовок
remove или
_wremove или

Дополнительные сведения о совместимости см. в разделе Совместимость.

Библиотеки

Пример

// crt_remove.c /* This program uses remove to delete crt_remove.txt */ #include int main( void )

Вход: crt_remove.txt

This file will be deleted. 

Пример полученных результатов

Deleted 'CRT_REMOVE.TXT' 

Как удалить файл в си

#include
int remove( const char * fname )
Стирает файл, возвращает 0 в случае успеха.

Еще один такой же, кнопку «Редактировать юзайте»

Голова человеку дадена — не токмо шапку носить!
Последний раз редактировалось merax; 28.11.2007 в 23:23 .
Регистрация: 21.11.2007
Сообщений: 8
!
Сообщение от Adamant
#include
int remove( const char * fname )
Стирает файл, возвращает 0 в случае успеха.

а ты не знаешь как файл опустошить?
Пользователь
Регистрация: 20.09.2007
Сообщений: 99


FILE * fopen( «fname», «w» )
Существующий файл с указанным именем будет стерт, а вместо него будет открыт новый файл (с тем же именем). Если файла с указанным вами именем не существует, он будет создан.
P.S. Позволю себе дать вам дружеский совет: если я не ошибаюсь, вы начали изучение сразу с C++. Не пожалейте месяца изучите хотя бы базовый курс простого Си. Убежден, не пожалеете!
С наилучшими пожеланиями.

Голова человеку дадена — не токмо шапку носить!
Регистрация: 21.11.2007
Сообщений: 8
эээ

[QUOTE=Adamant;51607]
FILE * fopen( «fname», «w» )
Существующий файл с указанным именем будет стерт, а вместо него будет открыт новый файл (с тем же именем). Если файла с указанным вами именем не сущес. QUOTE]

У меня Билдер пишет хрень какуюто: «can not convert char * to file *»,
причем тут чар? Не знаете что за ошибка?

Пользователь
Регистрация: 20.09.2007
Сообщений: 99

FILE *fp;
if( ( fp = fopen( «C:/Papka/file.txt», «w» ) ) == NULL )
puts( » Чего-то я не могу ваш файл открыть?!» );
getch();
exit();
>
fclose( fp );
puts( «А файл то уже пустой! «);

Голова человеку дадена — не токмо шапку носить!
Пользователь
Регистрация: 01.11.2007
Сообщений: 33
Сообщение от Adamant


FILE * fopen( «fname», «w» )
P.S. Позволю себе дать вам дружеский совет: если я не ошибаюсь, вы начали изучение сразу с C++. Не пожалейте месяца изучите хотя бы базовый курс простого Си.

Некоторые считают что Си может помешать правильному восприятию Си++ изначально так сказаать збитть с толку, хотя я не согласен. в принципе fstream может делать все что и FILE так что

fopen( "fname", "w" )

эквивалентно

file.open( "fname", ios::out )

Последний раз редактировалось PuzzleC; 26.11.2007 в 06:51 .
Пользователь
Регистрация: 20.09.2007
Сообщений: 99
Сообщение от PuzzleC

Некоторые считают что Си может помешать правильному восприятию Си++ изначально так сказать сбить с толку, хотя я не согласен.

В этом есть рациональное зерно: все таки разное мышление. В Си — структурное, а в Си с плюсами все таки преимущественно объектно-ориентированное. Но на мой взгляд знание «простых Сей» лишним ни в коем случае не будет. Лично из моего опыта по самостоятельному изучения: ( если это кому-нибудь будет интересно). Начал изучать сразу с Сей с плюсами, как мне тоже посоветовали, но через месяц бросил (многое не мог понять), начал с Си (правда уже была база знаний в PHP), после этого у меня все пошло как по маслу, правда действительно иногда давало о себе знать структурное мышление, но оно со временем перестает доминировать). Еще раз подчеркиваю, это сугубо мое мнение, которое может не совпадать с вашим.
С уважением.

Голова человеку дадена — не токмо шапку носить!
Пользователь
Регистрация: 25.03.2007
Сообщений: 67
ifstream

Может немного не по теме, но если использовать namespase std, и обьявлять переменную тима ifstream, то после того как мы доходим до конца файла (-1 позиция) фаил становиться аьсолютно не доступен, т.е. его нельзя не закрыть функция close.filename и похицию поменять тоже нельзя seekg.filename пока я с правляюсь с этой проблемой просто записывая всё содержимое файла в стринговую переменную, но хотелось бы услышать возможность РЕШЕНИЯ проблемы а не её ОБХОЖДЕНИЯ как в моём случае

Пользователь
Регистрация: 01.11.2007
Сообщений: 33

filename.clear(); // стереть флаг ошибки
По востижении EOF ios::state устонавливается в badbit, для дальнейшей работы надо badbit обнулить делает это функция член ios::clear();

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить файл с русским именем? Cricket2007 Помощь студентам 7 12.02.2008 17:51
Как удалить файл dagarik Общие вопросы Delphi 9 05.12.2007 20:25
Помогите, Как программо удалить файл который находится на жестком диске. niva622 Помощь студентам 3 19.04.2007 19:09
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *