C не знает о каталогах . Это операционная система спецификация c, обычно предоставляемая вашим ядром ОС (однако посмотрите внутри GNU Hurd как исключение и в unikernels ). Прочитайте C11 стандарт n1570 и забудьте в 2020 году об устаревших стандартах C89 и Turbo C. Попробуйте попробовать Linux дистрибутив (например, Ubuntu или Debian или другие). Большинство из них предоставляют G CC или Clang (или не оптимизирующий Tiny CC компилятор) и являются очень разработчиками -дружелюбный. Моя рекомендация: используйте G CC как gcc -Wall -Wextra -g
. Выберите достаточно хороший встроенный инструмент автоматизации (может быть GNU make ) с соответствующим редактором исходного кода (например, GNU emacs или vim или geany или другие). Узнайте, , как отлаживать небольшие программы и использовать отладчик GDB и инструмент управления версиями git
.
POSIX знает о каталогах (это спецификация API , написанная на английском языке sh, также определяющая regex (3) ). См. здесь и прочитайте Linux справочные страницы . А также WinAPI .
Вкл. Linux, см. mkdir (2) , chdir (2) , readdir ( 3) , getcwd (3) , unlink (2) , stat (2) , open (2) , nftw (3) , path_resolution (7) et c и т. Д .; Вы можете изучить исходный код Linux ядра и некоторых распространенных библиотек C для него, таких как GNU glib c или musl- Lib c. Бюджет на это несколько месяцев полный рабочий день ваших усилий. Они с открытым исходным кодом , поэтому при некоторых условиях вам разрешается изучать, улучшать и повторно использовать их исходный код . См. Также http://linuxfromscratch.org/
Обратите внимание также popen . Вы, вероятно, не хотите его использовать и предпочли бы использовать более примитивные системные вызовы (см. syscalls (2) для их списка в Linux). Вы можете использовать такую библиотеку, как Glib (из GTK ).
Помните, что C программы (типа отдельно ) могут работать на голом металле (например, Arduino ). В этих случаях говорить о каталогах не имеет никакого смысла. Смотрите также osdev.org и обратите внимание, что Linux ядро записано в C (с небольшим количеством ассемблерного кода).
GrassHopper была ОС, написанной в основном на C без каких-либо файлов или каталогов. Смотрите также старые обсуждения, заархивированные на tunes.org и tccboot .