{"id":5403,"date":"2022-08-28T12:30:31","date_gmt":"2022-08-28T07:00:31","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/"},"modified":"2022-08-28T12:30:31","modified_gmt":"2022-08-28T07:00:31","slug":"solved-compare-function-for-qsort-using-two-fields-of-a-structure","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/","title":{"rendered":"[Solved] Compare function for qsort using two fields of a structure?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-23735112\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"23735112\" data-parentid=\"23732011\" data-score=\"2\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Your code as written has several syntax errors, and also your comparison function doesn&#8217;t do quite what you want.  Quoting from the manpage for <code>qsort<\/code>:<\/p>\n<blockquote>\n<p>The comparison function must return an integer less than, equal to, or<br \/>\n         greater  than  zero  if the first argument is considered to be respec\u2010<br \/>\n         tively less than, equal to, or greater than the second.  If  two  mem\u2010<br \/>\n         bers compare as equal, their order in the sorted array is undefined.<\/p>\n<\/blockquote>\n<p>Consider the following code:<\/p>\n<pre><code>#include &lt;stdlib.h&gt;\n#include &lt;string.h&gt;\n\nstruct product {\n    char name[30]; \n    float price;\n};\n\nint compare(const void *a, const void *b) {\n\n  const struct product *x = a;   \/\/ void* can be assigned to any other pointer type\n  const struct product *y = b;\n\n  int comp =  x-&gt;price - y-&gt;price;\n\n  if (comp &lt; 0)\n    return -1;\n\n  if (comp &gt; 0)\n    return 1;\n\n  comp = strcmp(x-&gt;name, y-&gt;name);\n\n  return comp;\n}\n<\/code><\/pre>\n<p>If you want to reverse the sort order, negate <code>comp<\/code> at the appropriate place.<\/p>\n<p>As others have mentioned, this is C code, and is not idiomatic C++.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">2<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Compare function for qsort using two fields of a structure? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Your code as written has several syntax errors, and also your comparison function doesn&#8217;t do quite what you want. Quoting from the manpage for qsort: The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respec\u2010 tively less than, equal to, &#8230; <a title=\"[Solved] Compare function for qsort using two fields of a structure?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\" aria-label=\"More on [Solved] Compare function for qsort using two fields of a structure?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,1356,1355],"class_list":["post-5403","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-qsort","tag-structure"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Compare function for qsort using two fields of a structure? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Compare function for qsort using two fields of a structure? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Your code as written has several syntax errors, and also your comparison function doesn&#8217;t do quite what you want. Quoting from the manpage for qsort: The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respec\u2010 tively less than, equal to, ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-28T07:00:31+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Compare function for qsort using two fields of a structure?\",\"datePublished\":\"2022-08-28T07:00:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\"},\"wordCount\":128,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"qsort\",\"structure\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\",\"name\":\"[Solved] Compare function for qsort using two fields of a structure? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-08-28T07:00:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Compare function for qsort using two fields of a structure?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Compare function for qsort using two fields of a structure? - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Compare function for qsort using two fields of a structure? - JassWeb","og_description":"[ad_1] Your code as written has several syntax errors, and also your comparison function doesn&#8217;t do quite what you want. Quoting from the manpage for qsort: The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respec\u2010 tively less than, equal to, ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/","og_site_name":"JassWeb","article_published_time":"2022-08-28T07:00:31+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Compare function for qsort using two fields of a structure?","datePublished":"2022-08-28T07:00:31+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/"},"wordCount":128,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","qsort","structure"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/","url":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/","name":"[Solved] Compare function for qsort using two fields of a structure? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-08-28T07:00:31+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-compare-function-for-qsort-using-two-fields-of-a-structure\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Compare function for qsort using two fields of a structure?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/5403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=5403"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/5403\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=5403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=5403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=5403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}