{"id":22551071,"url":"https://github.com/xdec0de/42printf","last_synced_at":"2025-03-28T10:11:32.974Z","repository":{"id":118192308,"uuid":"432207858","full_name":"xDec0de/42printf","owner":"xDec0de","description":"[42] My own (Very limited) version of printf","archived":false,"fork":false,"pushed_at":"2024-11-26T16:14:37.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T10:34:54.222Z","etag":null,"topics":["42","42born2code","42cursus","42school","c","ftprintf","ftprintf42","printf","printf42"],"latest_commit_sha":null,"homepage":"","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/xDec0de.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":"2021-11-26T14:34:33.000Z","updated_at":"2024-11-26T17:06:19.000Z","dependencies_parsed_at":"2024-12-07T17:09:36.224Z","dependency_job_id":"e8f23366-850a-48fb-80d8-f0bf16d57421","html_url":"https://github.com/xDec0de/42printf","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/xDec0de%2F42printf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xDec0de%2F42printf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xDec0de%2F42printf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xDec0de%2F42printf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xDec0de","download_url":"https://codeload.github.com/xDec0de/42printf/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246009078,"owners_count":20708881,"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":["42","42born2code","42cursus","42school","c","ftprintf","ftprintf42","printf","printf42"],"created_at":"2024-12-07T17:09:33.880Z","updated_at":"2025-03-28T10:11:32.948Z","avatar_url":"https://github.com/xDec0de.png","language":"C","readme":"# 42 - ft_printf\n\nA project that consists on creating a replica of the `printf` function.\nWell... A very limited version of it.\n\n\u003cdiv align=center\u003e\n  \u003ca href=\"https://www.codefactor.io/repository/github/xdec0de/42printf\"\u003e\n    \u003cimg src=\n    \"https://www.codefactor.io/repository/github/xdec0de/42printf/badge\"\n    alt=\"CodeFactor\"/\u003e\n  \u003c/a\u003e\n    \u003ca href=\"https://app.codacy.com/gh/xDec0de/42printf\"\u003e\n    \u003cimg src=\n    \"https://app.codacy.com/project/badge/Grade/016a53fa76b24af983e035a00a3566b5\"\n    alt=\"Codacy\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n## Project instructions\n\nFirst, let's see the general instructions that apply to ft_printf:\n\n- The Makefile must not relink (Unnecesary recompilations).\n- The function must never crash nor have undefined behavior\n  (This project has an exception to this rule).\n- The code must be written following\n  [norminette](https://github.com/42School/norminette) requirements.\n- Memory leaks are an issue, so no leaks are allowed, even\n  if the function fails.\n\nNow, the specific instructions for ft_printf:\n\n- The only allowed to use functions are `malloc`, `free`, `write`,\n  `va_start`, `va_arg`, `va_copy` and `va_end`.\n- The behavior of `printf` must be replicated, so if `printf` crashes,\n  this function should crash too, the return value must also be the same.\n- The use of [libft](https://github.com/xDec0de/42libft) is allowed.\n  But I decided to use new functions.\n- ONLY the following conversions must be handled:\n  %c, %s, %p, %d, %i, %u, %x, %X and %%\n\n## What I learned\n\nThis project teaches us how to use variable arguments with\n`va_start`, `va_arg`, `va_copy` and `va_end`.\nEven though I didn't need to use `va_copy`.\n\n## Testing the project\n\nThis project includes a test file, `test_printf.c`. You can compile all\nfiles with something like `gcc *.c` and run the executable to see if this\nproject behaves exactly as the `printf` function. This cannot be compiled\nwith error flags as it intentionally uses weird values.\n\n~ This file is ignored by Codacy, as it has intentionally bad code\nquality. This was a fast solution, a proper tester is preferred over it.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdec0de%2F42printf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxdec0de%2F42printf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdec0de%2F42printf/lists"}