{"id":8176,"date":"2023-02-15T16:24:47","date_gmt":"2023-02-15T14:24:47","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?p=8176"},"modified":"2026-03-09T08:22:34","modified_gmt":"2026-03-09T06:22:34","slug":"pr2en4-structures-2-and-basic-header","status":"publish","type":"post","link":"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/","title":{"rendered":"PR2EN4: Structures 2 and basic header"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Lab_materials\" >Lab materials<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Lab_tasks\" >Lab tasks<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Lab_task_part_1_W04-01_Print_associated_data\" >Lab task part 1 [W04-01]: Print associated data<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Data_files\" >Data files<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Requirements\" >Requirements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Recommended_functions\" >Recommended functions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Testing\" >Testing<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Lab_task_part_2_W04-2_Calculate_taxes\" >Lab task part 2 [W04-2]: Calculate taxes<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Requirements-2\" >Requirements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Recommended_functions-2\" >Recommended functions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Testing-2\" >Testing<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#After_this_class_you_should\" >After this class, you should<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/#Additional_materials\" >Additional materials<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Lab_materials\"><\/span>Lab materials<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Slides: <a href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/slaidid-en\/04_structures_vol2.pdf\"><strong>Structures 2 + basic header<\/strong><\/a><\/li>\n<li>Additional example: <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programming-ii\/code-samples\/applying-enumeration-and-header-file-to-calculator\/\">calculator with header<\/a> (Check the thirdtab)<\/strong><\/li>\n<li>Additional example: <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programming-ii\/code-samples\/str_func_longer\/\">structure array with pointers<\/a> (This is the most relevant for the lab task!)<\/strong><\/li>\n<li>Additional example: <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programming-ii\/code-samples\/returning-a-struct\/\">returning a struct<\/a><\/strong><\/li>\n<li>Additional example: <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programming-ii\/code-samples\/substruct\/\">structure in a structure<\/a><\/strong><\/li>\n<li>Additional example: <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programming-ii\/code-samples\/advanced-structure-to-stucture-pointers\/\">structure pointer as a structure member<\/a><\/strong><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Lab_tasks\"><\/span>Lab tasks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>During the lab, you will solve a task that is separated into two gradable parts. The first part is focused on reading the data from two files and printing the associated data. The second part focuses on calculations using both data files and allows you to create additional members that do not exist in the struct. During the task you will also learn about using header files.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Lab_task_part_1_W04-01_Print_associated_data\"><\/span>Lab task part 1 [W04-01]: Print associated data<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>In part one, we&#8217;ll print the data we are reading from the data files. For this, we need to make sure to make the necessary associations.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Data_files\"><\/span>Data files<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>The data is given to you in 2 files, described by an ERD (entity-relationship diagram.<\/p>\n<p>Note: These kind of diagrams can also be shown as UML class diagrams. Check additional materials for a link.<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2023\/02\/erd-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8193\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2023\/02\/erd-1.png\" alt=\"\" width=\"317\" height=\"373\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2023\/02\/erd-1.png 317w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2023\/02\/erd-1-255x300.png 255w\" sizes=\"auto, (max-width: 317px) 100vw, 317px\" \/><\/a><\/p>\n<p>ERD cardinality rules state that<\/p>\n<ul>\n<li><strong>A person<\/strong> may own <strong>0 or more vehicles<\/strong><\/li>\n<li><strong>Every vehicle<\/strong> must belong to <strong>exactly one person<\/strong><\/li>\n<\/ul>\n<p>The data is being associated by the Estonian ID code (person_id)<\/p>\n<p><strong>Download the data files from this link:<\/strong> <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/andmefailid\/4_data.zip\">https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/andmefailid\/4_data.zip<\/a><\/strong><\/p>\n<h5><span class=\"ez-toc-section\" id=\"Requirements\"><\/span>Requirements<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Implement a header file. Store the struct declarations, macros and function prototypes in there. If necessary, also enums.<\/li>\n<li>Read data from two files given to you. Store it in two separately declared structure arrays\n<ul>\n<li>Avoid more complex solutions such as substructures and pointers to structures during the lab task!<\/li>\n<li>eID must be stored as a 64-bit integer in the structures. This will reduce the CPU clock cycles required for comparisons! Use <span class=\"lang:default highlight:0 decode:true crayon-inline \">inttypes.h<\/span>\u00a0!<\/li>\n<\/ul>\n<\/li>\n<li>Practice pointer arithmetic with struct arrays\n<ul>\n<li>Use the array (-&gt;) member-access\u00a0 operator whenever working with the struct arrays (reading, writing, comparing)<\/li>\n<li>Avoid square brackets []for indexing struct arrays<\/li>\n<\/ul>\n<\/li>\n<li>Sort the list of people alphabetically in ascending order by their first name.<\/li>\n<li>Print out the list of vehicle owners, followed by all the vehicles they own\n<ul>\n<li>Write the owners information only once as a header<\/li>\n<li>Follow this by printing all the vehicles they own<\/li>\n<li>For people without any associated vehicles, write an appropriate message<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Recommended_functions\"><\/span>Recommended functions<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>NB! The list here is just a recommendation. Your functions and their parameters can be different.<\/p>\n<pre class=\"toolbar:2 lang:default highlight:0 decode:true\">1. Reading people file\r\n   Parameter: pointer to the people struct array\r\n   Parameter: maximum number of people that can be read (array len)\r\n   Return:    Number of people\r\n   \r\n   Note: you may want to add file name as the third parameter!\r\n\r\n2. Reading vehicles file\r\n   Parameter: pointer to the vehicles struct array\r\n   Parameter: maximum number of vehicles that can be read (array len) \r\n   Return:    Number of vehicles\r\n\r\n   Note: you may want to add file name as the third parameter!\r\n\r\n3. Sorting people based on their name\r\n   Parameter: pointer to the people struct array\r\n   Parameter: number of people in the array\r\n   Return:    none\r\n\r\n4. Displaying data\r\n   Parameter: pointer to the people struct array\r\n   Parameter: number of people in the array\r\n   Parameter: pointer to the vehicles struct array\r\n   Parameter: number of vehicles in the array\r\n   Return:    none\r\n\r\n<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Testing\"><\/span>Testing<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>This is the expected output from part 1<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:c highlight:0 decode:true\">30610072188 Andres Siid (income: 0.00)\r\n        car 1:  931NTM (tax: 319.00)\r\n\r\n49112012007 Anne Saar (income: 42510.00)\r\n        car 1:  994MBP (tax: 552.00)\r\n        car 2:  552PND (tax: 391.00)\r\n        car 3:  553PND (tax: 391.00)\r\n\r\n68604152911 Dolores Vilipuu (income: 45000.00)\r\n        car 1:   002XA (tax: 300.00)\r\n\r\n44801231278 Jan Karu (income: 0.00)\r\n        *** No registered cars ***\r\n\r\n55506211816 Marko Rebane (income: 15000.00)\r\n        car 1: VANITY1 (tax: 2500.00)\r\n        car 2:  050AAC (tax: 925.00)\r\n\r\n49011162694 Sten-Oliver Vallassaar (income: 20000.00)\r\n        car 1:  001ABC (tax: 400.00)\r\n\r\n60210031677 Toomas Luik (income: 30000.00)\r\n        *** No registered cars ***\r\n<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Lab_task_part_2_W04-2_Calculate_taxes\"><\/span>Lab task part 2 [W04-2]: Calculate taxes<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Part 2 continues on part 1 with all the existing requirements staying in place and continuing through this part of the task.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Requirements-2\"><\/span>Requirements<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Find and print the taxation values for every person.\n<ul>\n<li>Print both the sum as a value and as a percentage to the annual income.<\/li>\n<li>Write a warning if the tax percentage is 10% or greater than their annual income.<\/li>\n<li>Write an error if there is no income<\/li>\n<li>Remember! Make functions that only do one thing. Do not put calculations in the same function as reading the data or printing. Have a separate function that only does the tax calculations!<\/li>\n<\/ul>\n<\/li>\n<li>Hint: You should add additional member(s) to your structures to be able to store and display the required results!\u00a0 Structure members don&#8217;t need match exactly to the data fields in the file, adding or even processing and storing it differently in memory is OK.<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Recommended_functions-2\"><\/span>Recommended functions<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>NB! The list here is just a recommendation. Your functions and their parameters can be different.<\/p>\n<pre class=\"toolbar:2 lang:default highlight:0 decode:true \">1. Calculating taxes\r\n   Parameter: Vehicles structure array\r\n   Parameter: Number of vehicles\r\n   Parameter: People structure array\r\n   Parameter: Number of people\r\n   Return:    none\r\n\r\n2. Printing taxes and warnings\r\n   Parameter: People structure array\r\n   Parameter: Number of people\r\n   Return:    none<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Testing-2\"><\/span>Testing<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>This is the expected output from part 2<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:c highlight:0 decode:true\">30610072188 Andres Siid (income: 0.00)\r\n        car 1:  931NTM (tax: 319.00)\r\n\r\n49112012007 Anne Saar (income: 42510.00)\r\n        car 1:  994MBP (tax: 552.00)\r\n        car 2:  552PND (tax: 391.00)\r\n        car 3:  553PND (tax: 391.00)\r\n\r\n68604152911 Dolores Vilipuu (income: 45000.00)\r\n        car 1:   002XA (tax: 300.00)\r\n\r\n44801231278 Jan Karu (income: 0.00)\r\n        *** No registered cars ***\r\n\r\n55506211816 Marko Rebane (income: 15000.00)\r\n        car 1: VANITY1 (tax: 2500.00)\r\n        car 2:  050AAC (tax: 925.00)\r\n\r\n49011162694 Sten-Oliver Vallassaar (income: 20000.00)\r\n        car 1:  001ABC (tax: 400.00)\r\n\r\n60210031677 Toomas Luik (income: 30000.00)\r\n        *** No registered cars ***\r\n\r\n\r\nName: Andres Siid\r\n------------------\r\nIncome:          0.00 EUR\r\nTax:           319.00 EUR\r\nTax pcnt:        0.00 %\r\nERROR: Missing income\r\n\r\n\r\nName: Anne Saar\r\n----------------\r\nIncome:      42510.00 EUR\r\nTax:          1334.00 EUR\r\nTax pcnt:        3.14 %\r\n\r\n\r\nName: Dolores Vilipuu\r\n----------------------\r\nIncome:      45000.00 EUR\r\nTax:           300.00 EUR\r\nTax pcnt:        0.67 %\r\n\r\n\r\nName: Jan Karu\r\n---------------\r\nIncome:          0.00 EUR\r\nTax:             0.00 EUR\r\nTax pcnt:        0.00 %\r\nERROR: Missing income\r\n\r\n\r\nName: Marko Rebane\r\n-------------------\r\nIncome:      15000.00 EUR\r\nTax:          3425.00 EUR\r\nTax pcnt:       22.83 %\r\nWARNING! Tax &gt; 10%\r\n\r\n\r\nName: Sten-Oliver Vallassaar\r\n-----------------------------\r\nIncome:      20000.00 EUR\r\nTax:           400.00 EUR\r\nTax pcnt:        2.00 %\r\n\r\n\r\nName: Toomas Luik\r\n------------------\r\nIncome:      30000.00 EUR\r\nTax:             0.00 EUR\r\nTax pcnt:        0.00 %<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"After_this_class_you_should\"><\/span>After this class, you should<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Know how to create and include a header file to your code file<\/li>\n<li>Know what should be written to the header file and what must not be written there<\/li>\n<li>Know common use cases for headers<\/li>\n<li>Know what&#8217;s the difference and how the addressing changes whether you are using quotes &#8220;&#8221; or angle brackets &lt;&gt; to include a header<\/li>\n<li>Know why we need guards for the headers and how to implement them<\/li>\n<li>Know how to embed debugging statements in your code using macros in two different ways<\/li>\n<li>Know how to initialize structures<\/li>\n<li>Know how to nest structures<\/li>\n<li>Know how to return a structure<\/li>\n<li>Know how and when to use the arrow operator to access structure members<\/li>\n<li>Know how to use pointer arithmetic when working with structure arrays<\/li>\n<li>Be able to read simpler ERD diagrams and know what they are used for modelling data<\/li>\n<li>Know that there are class diagrams in UML that are similarly used to model data as ERD diagrams are.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Additional_materials\"><\/span>Additional materials<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>C Header Files<br \/>\n<strong><a href=\"https:\/\/www.tutorialspoint.com\/cprogramming\/c_header_files.htm\">https:\/\/www.tutorialspoint.com\/cprogramming\/c_header_files.htm<\/a><\/strong><\/li>\n<li>ERD &#8211; Entity Relationship Diagram<br \/>\n<strong><a href=\"https:\/\/www.visual-paradigm.com\/guide\/data-modeling\/what-is-entity-relationship-diagram\/\">https:\/\/www.visual-paradigm.com\/guide\/data-modeling\/what-is-entity-relationship-diagram\/<\/a><\/strong><\/li>\n<li>Data models using UML class diagrams (alternative to ERD)<br \/>\n<strong><a href=\"https:\/\/sparxsystems.com\/resources\/tutorials\/uml\/datamodel.html\">https:\/\/sparxsystems.com\/resources\/tutorials\/uml\/datamodel.html<\/a><\/strong><\/li>\n<li>Cardinality rules in data modelling<br \/>\n<strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Cardinality_(data_modeling)\">https:\/\/en.wikipedia.org\/wiki\/Cardinality_(data_modeling)<\/a><\/strong><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Lab materials Slides: Structures 2 + basic header Additional example: calculator with header (Check the thirdtab) Additional example: structure array with pointers (This is the most relevant for the lab task!) Additional example: returning a struct Additional example: structure in a structure Additional example: structure pointer as a structure member Lab tasks During the lab, &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/labs\/pr2en4-structures-2-and-basic-header\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">PR2EN4: Structures 2 and basic header<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[75,105],"tags":[],"class_list":["post-8176","post","type-post","status-publish","format-standard","hentry","category-labs","category-pr2_en"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/comments?post=8176"}],"version-history":[{"count":9,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8176\/revisions"}],"predecessor-version":[{"id":11288,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8176\/revisions\/11288"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=8176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/categories?post=8176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/tags?post=8176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}