A collection of C fundamentals, exercises, and projects created while learning and improving my C programming skills.
This repository is a personal learning workspace where I practice C programming through small programs, exercises, and progressively more challenging projects.
.
├── Fundamentals/
│ └── C fundamentals and learning material
│
├── Projects/
│ ├── 01-Easy/
│ │ ├── str_copy.c
│ │ ├── data_size.c
│ │ ├── int_swap.c
│ │ └── ...
│ │
│ ├── 02-Medium/
│ │ └── Intermediate-level C projects
│ │
│ └── 03-Hard/
│ └── More challenging C projects
│
├── .gitignore
├── LICENSE
└── README.md
The goal of this repository is to document my progress while learning C and to provide a place to experiment with programming concepts.
Rather than only following tutorials, this repository focuses on writing actual C programs, solving problems, and building projects.
The projects and exercises become progressively more challenging as I improve my understanding of the language.
The main language used throughout this repository is:
- C
- C Standard Library
Depending on the project, additional libraries or system APIs may be used.
git clone https://github.com/olidbk/MiniC.gitcd MiniCFor example:
gcc Projects/Easy/calculator.c -o calculatorOn Linux/macOS:
./calculatorOn Windows:
calculator.exeYou can also use another C compiler such as clang:
clang Projects/Easy/calculator.c -o calculatorSome projects may require additional compiler flags, libraries, or dependencies. If a project has specific requirements, they will be documented alongside the project.
This repository is a work in progress.
As I continue learning C, new exercises, experiments, and projects will be added.
- Strengthening C fundamentals
- Understanding variables, data types, and operators
- Learning pointers and memory management
- Working with arrays and strings
- Understanding structs and enums
- Learning file handling
- Practicing functions and modular programming
- Improving problem-solving skills
- Understanding how C interacts with memory
- Writing cleaner and more maintainable code
- Gradually increasing project complexity
Some projects in this repository are created specifically for learning and experimentation.
They are not necessarily designed to be production-ready applications. Some programs may intentionally demonstrate simple, inefficient, or experimental approaches in order to practice a particular C programming concept.
Some projects may also intentionally explore low-level concepts such as memory management, pointers, and system behavior. These programs should be used responsibly.
This repository is primarily a personal learning project.
Suggestions, improvements, and constructive feedback are welcome.
If you find a bug or have an idea for improving a project, feel free to open an issue or submit a pull request.
This project is licensed under the MIT License.
See the LICENSE file for more information.
This repository represents my ongoing journey with C programming.
From simple exercises and basic programs to increasingly complex projects, the main goal is to keep learning, experimenting, understanding how things work under the hood, and improving one project at a time.