{"id":13102,"date":"2022-10-03T00:40:35","date_gmt":"2022-10-02T19:10:35","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/"},"modified":"2022-10-03T00:40:35","modified_gmt":"2022-10-02T19:10:35","slug":"solved-c-strings-behavior-and-atoi-function","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/","title":{"rendered":"[Solved] C strings behavior, and atoi function"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-49850405\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"49850405\" data-parentid=\"49850276\" data-score=\"1\" 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>The problem is indeed here.<\/p>\n<pre><code>char instring[2];\n<\/code><\/pre>\n<p>Now let&#8217;s think about this line.<\/p>\n<pre><code>gets(instring);\n<\/code><\/pre>\n<p>Let&#8217;s say you type <code>10<\/code> and hit enter. What will go into <code>instring<\/code> is three bytes.<\/p>\n<ol>\n<li><code>1<\/code><\/li>\n<li><code>0<\/code><\/li>\n<li>A terminating null.<\/li>\n<\/ol>\n<p><code>instring<\/code> can only hold <em>two<\/em> bytes, but <code>gets<\/code> will shove (at least) <em>three<\/em> in anyway. That extra byte will overflow into adjacent memory corrupting some other variable&#8217;s memory causing some bizarre bug.<\/p>\n<p>And that&#8217;s why making <code>instring<\/code> large enough to hold the result from <code>gets<\/code> fixes the program.<\/p>\n<p>To avoid this when working with strings, use functions which limit themselves to the memory available. In this case <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.tutorialspoint.com\/c_standard_library\/c_function_fgets.htm\"><code>fgets<\/code><\/a>.<\/p>\n<pre><code>fgets(instring, sizeof(instring), stdin);\n<\/code><\/pre>\n<p>That will limit itself to only reading as much as it can fit into <code>instring<\/code>.<\/p>\n<p>In general, don&#8217;t get stingy with memory to read input. A common practice is to allocate one large buffer for reading input, 1024 is good, and reuse that buffer just for reading input. The data is copied out of it to more appropriately sized memory, which <code>atoi<\/code> effectively does for you.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">4<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved C strings behavior, and atoi function <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] The problem is indeed here. char instring[2]; Now let&#8217;s think about this line. gets(instring); Let&#8217;s say you type 10 and hit enter. What will go into instring is three bytes. 1 0 A terminating null. instring can only hold two bytes, but gets will shove (at least) three in anyway. That extra byte will &#8230; <a title=\"[Solved] C strings behavior, and atoi function\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/\" aria-label=\"More on [Solved] C strings behavior, and atoi function\">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":[2479,324,3524,362],"class_list":["post-13102","post","type-post","status-publish","format-standard","hentry","category-solved","tag-atoi","tag-c","tag-gets","tag-string"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] C strings behavior, and atoi function - 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-c-strings-behavior-and-atoi-function\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] C strings behavior, and atoi function - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] The problem is indeed here. char instring[2]; Now let&#8217;s think about this line. gets(instring); Let&#8217;s say you type 10 and hit enter. What will go into instring is three bytes. 1 0 A terminating null. instring can only hold two bytes, but gets will shove (at least) three in anyway. That extra byte will ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-02T19:10: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-c-strings-behavior-and-atoi-function\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] C strings behavior, and atoi function\",\"datePublished\":\"2022-10-02T19:10:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/\"},\"wordCount\":175,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"atoi\",\"c++\",\"gets\",\"string\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/\",\"name\":\"[Solved] C strings behavior, and atoi function - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-02T19:10:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] C strings behavior, and atoi function\"}]},{\"@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=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] C strings behavior, and atoi function - 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-c-strings-behavior-and-atoi-function\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] C strings behavior, and atoi function - JassWeb","og_description":"[ad_1] The problem is indeed here. char instring[2]; Now let&#8217;s think about this line. gets(instring); Let&#8217;s say you type 10 and hit enter. What will go into instring is three bytes. 1 0 A terminating null. instring can only hold two bytes, but gets will shove (at least) three in anyway. That extra byte will ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/","og_site_name":"JassWeb","article_published_time":"2022-10-02T19:10: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-c-strings-behavior-and-atoi-function\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] C strings behavior, and atoi function","datePublished":"2022-10-02T19:10:35+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/"},"wordCount":175,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["atoi","c++","gets","string"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/","url":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/","name":"[Solved] C strings behavior, and atoi function - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-02T19:10:35+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-c-strings-behavior-and-atoi-function\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] C strings behavior, and atoi function"}]},{"@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=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","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\/13102","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=13102"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/13102\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=13102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=13102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=13102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}