На самом деле, вам действительно не нужно делать это в C. В UNIX есть инструменты, которые могут выполнить почти любую задачу, которую вы хотите.
find . -type f -exec cp /dev/null {} ';'
Этот конкретный фрагмент выше найдет все файлы в текущем каталоге и попытается скопировать на него пустое устройство, эффективно обрезая файл до 0 байт.
Вы можете изменить начальный (верхний уровень) каталог, ограничитьимена (например, -name '*.jpg'
) и даже ограничивают его текущим каталогом (без подкаталогов) с помощью -maxdepth 0
.
. Есть много других опций с find
, которые вы можетеобнаружить, введя man find
в командной строке.Просто не вводите его в Google, вы можете получить больше, чем вы рассчитывали: -)
Если необходимость использования C является абсолютно необоротной, я бы все еще сделать это так, но с:
system ("find . -type f -exec cp /dev/null {} ';'");
Я не заинтересован в переписывании программного обеспечения, которое кто-то уже приложил кучу усилий для предоставления бесплатно: -)
Если, по моему совету, вы все еще хотите сделать это нелегко, вам нужно взглянуть на opendir
, readdir
и closedir
для обработки каталогов, затем просто используйте fopen
в режиме записи, затем fclose
для каждого файла-кандидата.
Есливы хотите перемещаться по целым структурам каталогов, а не только по текущему каталогу, вам придется определять каталоги из readdir
и, вероятно, проходить через них.