{"id":12797,"date":"2022-10-01T23:14:35","date_gmt":"2022-10-01T17:44:35","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/"},"modified":"2022-10-01T23:14:35","modified_gmt":"2022-10-01T17:44:35","slug":"solved-segmentation-fault-from-sscanf-in-a-loop-in-c","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/","title":{"rendered":"[Solved] Segmentation fault from sscanf in a loop in C"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-34463762\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"34463762\" data-parentid=\"34463654\" data-score=\"3\" 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>Using <code>feof()<\/code> is a bad idea as it can return zero, and then the next line of input can encounter end of the file &#8211; which can give unexpected errors<\/p>\n<p>Also <code>fgets()<\/code> returns <code>NULL<\/code> if an error occurs, including encountering end of file.<\/p>\n<p>Imagine your loop has been going along happily, and has just read the second last line in the file.   On the next iteration, <code>feof()<\/code> will return zero, so the first statement <code>strings = fgets(strings, __MAXLEN__, prova)<\/code> will succeed.   The second one &#8211; inside the <code>do-while<\/code> loop &#8211; will set <code>strings<\/code> to <code>NULL<\/code>, so will pass the <code>NULL<\/code> to your <code>readCompl()<\/code> function &#8211; which will, in turn, try to read from the <code>NULL<\/code> using <code>sscanf()<\/code>.    <code>sscanf()<\/code> gives undefined behaviour if given a <code>NULL<\/code> &#8211; (one symptom of which can be a segmentation violation &#8211; the program accessing memory it shouldn&#8217;t).<\/p>\n<p>The solution needs to be in two parts.   Firstly, don&#8217;t use <code>feof()<\/code> to control any loop.  Second, check the result of functions you call (<code>fgets()<\/code>, <code>sscanf()<\/code>, etc) and &#8211; if you need to &#8211; use their return value to control loops.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Segmentation fault from sscanf in a loop in C <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Using feof() is a bad idea as it can return zero, and then the next line of input can encounter end of the file &#8211; which can give unexpected errors Also fgets() returns NULL if an error occurs, including encountering end of file. Imagine your loop has been going along happily, and has just &#8230; <a title=\"[Solved] Segmentation fault from sscanf in a loop in C\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/\" aria-label=\"More on [Solved] Segmentation fault from sscanf in a loop in C\">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,493,585,1187,362],"class_list":["post-12797","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-file","tag-scanf","tag-segmentation-fault","tag-string"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] Segmentation fault from sscanf in a loop in C - 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-segmentation-fault-from-sscanf-in-a-loop-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Segmentation fault from sscanf in a loop in C - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Using feof() is a bad idea as it can return zero, and then the next line of input can encounter end of the file &#8211; which can give unexpected errors Also fgets() returns NULL if an error occurs, including encountering end of file. Imagine your loop has been going along happily, and has just ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-01T17:44:35+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-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Segmentation fault from sscanf in a loop in C\",\"datePublished\":\"2022-10-01T17:44:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/\"},\"wordCount\":186,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"c++\",\"file\",\"scanf\",\"segmentation-fault\",\"string\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/\",\"name\":\"[Solved] Segmentation fault from sscanf in a loop in C - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2022-10-01T17:44:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Segmentation fault from sscanf in a loop in C\"}]},{\"@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\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1778218008\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1778218008\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1778218008\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Segmentation fault from sscanf in a loop in C - 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-segmentation-fault-from-sscanf-in-a-loop-in-c\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Segmentation fault from sscanf in a loop in C - JassWeb","og_description":"[ad_1] Using feof() is a bad idea as it can return zero, and then the next line of input can encounter end of the file &#8211; which can give unexpected errors Also fgets() returns NULL if an error occurs, including encountering end of file. Imagine your loop has been going along happily, and has just ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/","og_site_name":"JassWeb","article_published_time":"2022-10-01T17:44:35+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-segmentation-fault-from-sscanf-in-a-loop-in-c\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Segmentation fault from sscanf in a loop in C","datePublished":"2022-10-01T17:44:35+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/"},"wordCount":186,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","file","scanf","segmentation-fault","string"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/","url":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/","name":"[Solved] Segmentation fault from sscanf in a loop in C - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-01T17:44:35+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-segmentation-fault-from-sscanf-in-a-loop-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Segmentation fault from sscanf in a loop in C"}]},{"@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\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1778218008","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1778218008","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1778218008","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\/12797","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=12797"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/12797\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=12797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=12797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=12797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}