🌐 Language
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | ไทย | Français | Deutsch | Español | Italiano | Русский | Português | Nederlands | Polski | العربية | فارسی | Türkçe | Tiếng Việt | Bahasa Indonesia
# C Programming Projects Collection [![Buy Me A Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://buymeacoffee.com/trish07) A collection of C programming projects designed for beginners to learn and practice various programming concepts, from basic algorithms to network programming. Each project is self-contained and includes its own documentation and build system. ## Projects Overview ### 1. [SHA-512 Implementation](SHA-512/) A cryptographic hash function implementation that demonstrates: - Bit manipulation - Complex algorithms - Memory management - File I/O operations ### 2. [HTTP Server](http-server/) A basic HTTP server implementation that covers: - Socket programming - HTTP protocol basics - File serving - Network communication ### 3. [UDP Server-Client](udp-server-client/) A simple UDP-based communication system that teaches: - UDP socket programming - Client-server architecture - Network protocols - Message exchange ### 4. [Port Scanner](port-scanner/) A network diagnostic tool that demonstrates: - TCP socket programming - Network scanning techniques - Error handling - Command-line argument parsing ### 5. [Ping Implementation](ping/) A custom ping utility that covers: - ICMP protocol - Raw socket programming - Network diagnostics - Time measurement ### 6. [Tic-Tac-Toe](tic-tac-toe/) A classic game implementation that teaches: - Multiplayer game server -Socket programming - Game logic - User input handling ### 7. [Chat System](chat-system/) A real-time chat application that demonstrates: - TCP socket programming - Multi-threading - Real-time communication - Client-server architecture ### 8. [Lexical Analyzer](lexical-analyser/) A simple compiler front-end component that demonstrates: - Tokenization of source code - Parsing techniques - Compiler design principles - String manipulation ### 9. [Arithmetic Compiler](arithmetic-compiler/) A simple compiler that takes arithmetic expressions as input and generates assembly-like code: - Lexical analysis (tokenization) - Parsing and evaluation of expressions - Assembly code generation - Compiler construction fundamentals ### 10. [Asteroid Game](asteroid-game/) A terminal-based game where you control a ship to avoid falling asteroids: - Game state management - User input handling - Terminal-based graphics - Real-time gameplay mechanics - Simple collision detection ## Getting Started Each project in this repository is designed to be self-contained and includes: - Source code - Makefile or CMake configuration - README with build and usage instructions - Implementation details To get started with any project: 1. Navigate to the project directory 2. Read the project's README.md 3. Follow the build instructions 4. Run the program as described ## Prerequisites - GCC compiler (for C projects) - G++ compiler (for C++ projects) - Make utility - CMake (for C/C++ projects) - Basic understanding of C/C++ programming - For network projects: understanding of basic networking concepts ## Recommended Book To get started with C programming, I recommend this comprehensive book: [The C Programming Language](https://amzn.to/3F2Y1Zl) - A must-have resource for learning C programming fundamentals and best practices. ## Learning Path These projects are arranged in order of increasing complexity: 1. Start with Tic-Tac-Toe for basic programming concepts 2. Move to SHA-512 for algorithm implementation 3. Try the UDP Server-Client for basic networking 4. Progress to HTTP Server and Chat System for more complex networking 5. Finally, explore Port Scanner and Ping for advanced networking concepts ## Contributing Feel free to: - Report bugs - Suggest improvements - Add new features - Create new projects - Improve documentation ## License This project is open source and available for learning purposes. ## Note Some network-related projects (Port Scanner, Ping) require root/administrator privileges to run due to the use of raw sockets. Always use these tools responsibly and only on networks you have permission to test.