- 🎯 Introduction
- 🤔 Why This Repository
- 🚀 Getting Started
- 🗂️ Directory Structure
- 🖥️ Tmux
- 🤝 Contributing
- 📜 License
C is a powerful and widely-used programming language, known for its efficiency and close-to-hardware capabilities. This repository is my personal sandbox to:
- Understand C syntax and concepts.
- Practice problem-solving using C.
- Experiment with different coding techniques and tools.
This repository is primarily for my learning and self-improvement. By sharing my progress publicly, I hope to:
- Document my journey in a structured way.
- Receive constructive feedback from the community.
- Help others who might be starting their own journey in C.
The book I will be following and referencing throughout this repository is the C Programming Language - 2nd Edition (OCR). This book will serve as the primary guide for the C programming concepts, examples, and exercises found in this repository.
If you're here to follow along or try out the programs, you'll need:
- A C compiler such as GCC or Clang.
- A text editor or IDE of your choice (e.g., Vim, Visual Studio Code, etc.).
git clone https://github.com/Gurjaka/C-Programming-Language.git
cd C-Programming-Language
Navigate to the directory containing the program you want to run and compile it using:
cc program_name.c -o ./compiled/program_name
./compiled/program_name
For example:
cc hello_world.c -o ./compiled/hello_world
./compiled/hello_world
The directory structure of this repository is as follows:
C-Programming-Language/
├── assets
├── LICENSE
├── readme.md
├── src
│ ├── 1.0-non-book-related
│ ├── 1.1-getting-started
│ ├── 1.2-variables-arithmetic-expressions
│ ├── 1.3-for-statement
│ ├── 1.5-character-input-output
│ ├── 1.6-arrays
│ ├── 1.7-functions
│ ├── 1.8-arguments-call-by-value
│ ├── 1.9-character-arrays
│ ├── 1.10-external-variables-and-scope
├── tasks
│ ├── Chapter-1:Tutorial-Introduction
│ ├── Chapter-2:Types-Operators-Expressions
│ ├── Chapter-3:Control-Flow
│ ├── Chapter-4:Functions-Program-Structure
│ ├── Chapter-5:Pointers-Arrays
│ ├── Chapter-6:Structures
│ ├── Chapter-7:Input-Output
│ └── Chapter-8:The-UNIX-System-Interface
└── tmux.sh
Note: Each chapter includes its exercises and compiled programs. The "Tasks" directory contains Markdown files with descriptions for the exercises.
The tmux.sh script sets up a custom tmux session for an organized development environment. It creates a tmux session named "C", splits the terminal window into multiple panes for different tasks, and launches relevant programs in each pane. This setup allows the user to code, track tasks, compile and run a programs simultaneously in a single terminal session.
Layout:
_________________________________
| | TASKS |
| | NVIM |
| |___________|
| CODE | |
| NVIM | |
| | GCC |
| | |
|_____________________|___________|
While this is a personal learning project, contributions are welcome if you'd like to:
- Suggest improvements to my code.
- Share insights or tips for better coding practices.
- Point out mistakes or bugs.
Feel free to fork the repository, make your changes, and open a pull request. Please include clear comments explaining your changes.
This repository is licensed under the MIT License. Feel free to use, modify, and distribute the code in this repository. See the LICENSE file for details.
Thanks for visiting! 😊