{"id":18260011,"url":"https://github.com/hungrybluedev/c-programs","last_synced_at":"2025-04-08T23:44:33.392Z","repository":{"id":109591903,"uuid":"187717197","full_name":"hungrybluedev/C-Programs","owner":"hungrybluedev","description":"A collection of well-documented, mostly self-contained C programs. The programs include implementations of Data Structures as well as Algorithms.","archived":false,"fork":false,"pushed_at":"2020-06-01T10:51:38.000Z","size":63,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T18:36:26.042Z","etag":null,"topics":["algorithm","c","data-structures","dependency-free","implementation"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hungrybluedev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-20T21:40:29.000Z","updated_at":"2022-07-22T08:17:24.000Z","dependencies_parsed_at":"2023-05-01T10:16:21.814Z","dependency_job_id":null,"html_url":"https://github.com/hungrybluedev/C-Programs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hungrybluedev%2FC-Programs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hungrybluedev%2FC-Programs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hungrybluedev%2FC-Programs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hungrybluedev%2FC-Programs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hungrybluedev","download_url":"https://codeload.github.com/hungrybluedev/C-Programs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947825,"owners_count":21023058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","c","data-structures","dependency-free","implementation"],"created_at":"2024-11-05T10:41:32.460Z","updated_at":"2025-04-08T23:44:33.367Z","avatar_url":"https://github.com/hungrybluedev.png","language":"C","readme":"|                                                                                                                                Codacy                                                                                                                                |                                                     License                                                     |                                                                                                         Twitter                                                           |\n| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: |\n| [![Codacy Badge](https://api.codacy.com/project/badge/Grade/903858d5d0f649729b2364e0e96dabc6)](https://app.codacy.com/app/hungrybluedev/C-Programs?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=hungrybluedev/C-Programs\u0026utm_campaign=Badge_Grade_Settings) | ![GitHub](https://img.shields.io/github/license/hungrybluedev/C-Programs) |  [![Twitter URL](https://img.shields.io/twitter/url/https/hungrybluedev.svg?style=social)](https://twitter.com/HungryBlueDev) |\n\n# C Programs\n\n-   [C Programs](#c-programs)\n    -   [Introduction](#introduction)\n    -   [Motive](#motive)\n    -   [How to use these programs?](#how-to-use-these-programs)\n    -   [A Note on Unit Tests](#a-note-on-unit-tests)\n    -   [How can I help?](#how-can-i-help)\n    -   [List of Programs](#list-of-programs)\n\n## Introduction\n\nThis repository is a collection of C programs that are meant to be\nused as reference or reused (with the proper licenses, included\nalongside the sources, for easy distribution). I encourage people to\nexplore the source code and learn from them, rather than simply copy\nand paste it into their work. C is a particularly difficult language\nbecause the programmer must pay close attention to fine details. I\ntry to document as much as I can right into the source code, in\naddition to the READMEs and other Markdown files.\n\n## Motive\n\nMy intention is to educate beginners, besides just solving particular\nprogramming problems. I hope that the extra comments and instructions\nthat I have included in my work are useful and serve their purpose:\nto guide and educate. This work is liberally licensed under the\nMIT License, therefore, fellow developers can reuse this code in their\nprojects as long they provide attribution and follow the (very lenient)\nterms of use, you should be grand.\n\n## How to use these programs\n\nThis is not meant to be a project that creates one (or a set number) of\nbinaries that can be executed. It is merely a collection of different types\nof programs, with different problems to solve. Consequently, it doesn't make\nsense to create a single makefile to compile all the sources into libraries.\n\nThe project organization is important. All programs are self-contained in\ntheir respective folders. Take the entire folder and put it in your project.\nThe licences are already there, along with the READMEs, so there's a lot of\neffort saved. This is a modular project. With independent units. Pick and\nchoose to suit your needs.\n\n## A Note on Unit Tests\n\nThroughout the project, I have made use of [John Brewer's](http://www.jera.com/),\nMinUnit - a minimal unit testing framework for C. Find it [here](http://www.jera.com/techinfo/jtns/jtn002.html).\n\nThe reason I used this and not more established test suites is because of\nits ridiculous simplicity and plug-and-play nature. It is a completely header-based\nunit testing framework and writing unit tests is super easy. Check any of my\n`test.c` files and you will agree. Having this ensures that people will have less\nexcuses not to unit test their code. Even if it's C.\n\n## Recommended Software and Services\n\nThe programs are meant to be cross-platform. Here is a list of relevant programs\nand services I use:\n1.  [**CLion**](https://www.jetbrains.com/clion/) - This is my IDE of choice whenever I work on large projects. Whenver I can\n    afford to install CLion, I do. I am currently using my students' benefit to  evaluate this software for free.\n    I intend to get a CLion license for all contributors of this project, if there's enough interest.\n\n2.  [**Visual Studio Code**](https://code.visualstudio.com/) - It has reached a level of\n    maturity and acceptance that makes it well suited to be a daily-driver. Through the\n    use of extensions, it can be customised to suit almost all needs. Some of the\n    extensions that I use are:\n\n-   The default [C/C++ extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) from Microsoft\n-   [Comment Anchors](https://marketplace.visualstudio.com/items?itemName=ExodiusStudios.comment-anchors) from Exodius Studios\n-   [Remark](https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-remark) from mrmlnc\n\n3.  [**Scoop**](https://scoop.sh/) - A package manager for Windows. I use it to install\n    all command line tools and utilities, including, but not limited to:\n\n-   Git\n-   GCC (and MinGW)\n\n4.  [**Codacy**](https://www.codacy.com/) - A code quality monitoring service that is\n    free for open source projects, such as this one. It is very helpful as it catches\n    slip-ups or mistakes that unit tests are unable to cover.\n\n## How can I help\n\nIf you feel that this project was of (at least some) help to you, and\nyou want to repay me, then here's how to do it:\n\n1.  **Fix errors via Issues or Pull Requests** - If you come across any error,\n    (intentional or not) you may raise an _Issue_. I will fix the Issue as\n    soon as is possible for me to do. If you want to do it yourself, consider\n    submitting a _Pull Request_ with the updated code. \n2.  **Contribute code (with the same license as I do)** - There will obviously\n    be several prorgams that are not currently present in this archive. You\n    may generously add your own implementations (with proper documentation)\n    via a _Pull Request_.\n3.  **Consider financially supporting me** - It takes a lot of time and effort\n    to ensure that the programs I write here are of the highest quality possible.\n    If you benefitted from this project and have the means to provide some support\n    financially, you can do so via a monthly donation on\n    [Patreon](https://www.patreon.com/hungrybluedev) or a one time donation on\n    [PayPal](https://www.paypal.me/hungrybluedev).\n\n## List of Programs\n\n1.  [ArrayList](https://github.com/hungrybluedev/C-Programs/tree/master/Data%20Structures/ArrayList) - A dynamic, random-access array-based List implementation.\n2. [Panic](https://github.com/hungrybluedev/C-Programs/tree/master/StdLib/Panic) - A library that the program can call when a state of panic happens and we want to guarantee a graceful exit.\n3. [String](https://github.com/hungrybluedev/C-Programs/tree/master/StdLib/String) - A safe, length prefixed string implementation with lots of utility methods. Inspired by [nybbles.io's](https://www.youtube.com/channel/UCaV77OIv89qfsnncY5J2zvg) first video in the CKong series: [C11: [CKong] C introduction](https://www.youtube.com/watch?v=1KHVphJm6PU\u0026t=109s).\n\n","funding_links":["https://www.patreon.com/hungrybluedev","https://www.paypal.me/hungrybluedev"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhungrybluedev%2Fc-programs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhungrybluedev%2Fc-programs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhungrybluedev%2Fc-programs/lists"}