This repository contains the low-level programming track in C: hello world, variables, conditionals, loops, functions, debugging, pointers, arrays, strings, recursion, static/dynamic libraries, argc/argv, malloc/free, preprocessor, structures, function pointers, variadic functions, linked lists, bit manipulation, file I/O, hash tables, makefiles, and search algorithms. Each folder is a project; this README explains what each folder is for, what the main files do, and how to run the exercises.
- 0x00. Hello World
- 0x01. Variables, if/else, while
- 0x02. Functions, nested loops
- 0x03. Debugging
- 0x04. More functions, nested loops
- 0x05. Pointers, arrays, strings
- 0x06. Pointers, arrays, strings (cont.)
- 0x07. Pointers, arrays, strings (cont.)
- 0x08. Recursion
- 0x09. Static libraries
- 0x0A. argc, argv
- 0x0B. malloc, free
- 0x0C. More malloc, free
- 0x0D. Preprocessor
- 0x0E. Structures, typedef
- 0x0F. Function pointers
- 0x10. Variadic functions
- 0x12. Singly linked lists
- 0x13. More singly linked lists
- 0x14. Bit manipulation
- 0x15. File I/O
- 0x17. Doubly linked lists
- 0x18. Dynamic libraries
- 0x1A. Hash tables
- 0x1C. Makefiles
- 0x1E. Search algorithms
| Folder | Topic | What you'll practice |
|---|---|---|
| 0x00-hello_world | Hello World | Compilation, gcc, Betty |
| 0x01-variables_if_else_while | Variables, conditionals | int, if/else, while |
| 0x02-functions_nested_loops | Functions | Prototypes, nested loops |
| 0x03-debugging | Debugging | Fixing bugs |
| 0x04-more_functions_nested_loops | More functions | Loops, functions |
| 0x05-pointers_arrays_strings | Pointers & arrays | Pointers, arrays, strings |
| 0x06-pointers_arrays_strings | Pointers & arrays #2 | More pointer/array ops |
| 0x07-pointers_arrays_strings | Pointers & arrays #3 | Even more |
| 0x08-recursion | Recursion | Recursive functions |
| 0x09-static_libraries | Static libs | ar, ranlib |
| 0x0A-argc_argv | Command-line args | argc, argv |
| 0x0B-malloc_free | malloc, free | Dynamic memory |
| 0x0C-more_malloc_free | More malloc | calloc, realloc |
| 0x0D-preprocessor | Preprocessor | Macros, includes |
| 0x0E-structures_typedef | Structs | struct, typedef |
| 0x0F-function_pointers | Function pointers | Pointers to functions |
| 0x10-variadic_functions | Variadic | va_list, va_arg |
| 0x12-singly_linked_lists | Singly linked lists | List operations |
| 0x13-more_singly_linked_lists | More lists | Advanced list ops |
| 0x14-bit_manipulation | Bit manipulation | Bitwise ops |
| 0x15-file_io | File I/O | open, read, write |
| 0x17-doubly_linked_lists | Doubly linked lists | prev/next |
| 0x18-dynamic_libraries | Dynamic libs | .so, LD_LIBRARY_PATH |
| 0x1A-hash_tables | Hash tables | Hashing, collision |
| 0x1C-makefiles | Makefiles | make, rules |
| 0x1E-search_algorithms | Search algorithms | Linear, binary search |
- gcc (C compiler), Betty style: https://github.com/holbertonschool/Betty
- Ubuntu 20.04 LTS recommended
- Compile:
gcc -Wall -Wextra -Werror -pedantic -std=gnu89 -o output source.c - Run:
./output - Betty:
betty-style.pl file.candbetty-doc.pl file.c