<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Converting String Numbers to int... problems using atoi()  (parsing numbers from a string) in Classic/Legacy CodeWarrior</title>
    <link>https://community.nxp.com/t5/Classic-Legacy-CodeWarrior/Converting-String-Numbers-to-int-problems-using-atoi-parsing/m-p/179608#M4064</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hello,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am helping one of our electrical engineers on a project for the MC9S08SH8CTJ.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I would like to pass commands to it from hyperterminal, but for some reason I am having problems using atoi() to convert the ascii character string into a number&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;int nThree = 0;char *cThree = "3";nThree = atoi(cThree);&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;after stepping through the code I can see that it is getting inside the following method in stdlib.c&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;unsigned long int _strtoul(LIBDEF_ConstStringPtr nptr, LIBDEF_StringPtr *endptr, int base, unsigned int len)&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;it enters this loop of the previously mentioned function:&lt;/P&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;if (base &amp;lt; 37) {&amp;nbsp;&amp;nbsp;&amp;nbsp; while (CheckCharWithBase(*nptr, base, &amp;amp;val)) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHECK_OVERFLOW(lsum, &amp;gt;, (ULONG_MAX - val) / base, ERANGE);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsum = lsum * base + val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++nptr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (--len == 0) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto done; /*lint !e801 Use of goto is not deprecated */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; } /* end while */&amp;nbsp; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;The value for "lsum" is 0, "base" here is 10, "val" is 3, and nptr is pointing to the ascii character "3".&amp;nbsp; When it does the check overflow, it ends up in another file RTSHC08.c in this block of code, and it does not proceed past the last line here.&lt;/P&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;static void _ENTER_BINARY_L(void) {&amp;nbsp; asm {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PUSH_REGS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; // @i&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHH#ifdef __HCS08__&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDHX 6,SP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; // ra&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHH&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;The command window provides this error:&lt;/P&gt;&lt;P&gt;Error: Attempt to push or pop with SP out of allowed range&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please note that I am&amp;nbsp;not really used to C, and I have spent much more time in VB.Net, Java, and C#.&amp;nbsp; I need to be able to parse integer strings before I can proceed to terminal commands.&amp;nbsp; Thanks for the help.&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Message Edited by jprime on &lt;/SPAN&gt;&lt;SPAN class="date_text"&gt;2008-08-12&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;08:49 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 09:29:11 GMT</pubDate>
    <dc:creator>jprime</dc:creator>
    <dc:date>2020-10-29T09:29:11Z</dc:date>
    <item>
      <title>Converting String Numbers to int... problems using atoi()  (parsing numbers from a string)</title>
      <link>https://community.nxp.com/t5/Classic-Legacy-CodeWarrior/Converting-String-Numbers-to-int-problems-using-atoi-parsing/m-p/179608#M4064</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hello,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am helping one of our electrical engineers on a project for the MC9S08SH8CTJ.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I would like to pass commands to it from hyperterminal, but for some reason I am having problems using atoi() to convert the ascii character string into a number&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;int nThree = 0;char *cThree = "3";nThree = atoi(cThree);&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;after stepping through the code I can see that it is getting inside the following method in stdlib.c&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;unsigned long int _strtoul(LIBDEF_ConstStringPtr nptr, LIBDEF_StringPtr *endptr, int base, unsigned int len)&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;it enters this loop of the previously mentioned function:&lt;/P&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;if (base &amp;lt; 37) {&amp;nbsp;&amp;nbsp;&amp;nbsp; while (CheckCharWithBase(*nptr, base, &amp;amp;val)) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHECK_OVERFLOW(lsum, &amp;gt;, (ULONG_MAX - val) / base, ERANGE);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsum = lsum * base + val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++nptr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (--len == 0) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto done; /*lint !e801 Use of goto is not deprecated */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; } /* end while */&amp;nbsp; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;The value for "lsum" is 0, "base" here is 10, "val" is 3, and nptr is pointing to the ascii character "3".&amp;nbsp; When it does the check overflow, it ends up in another file RTSHC08.c in this block of code, and it does not proceed past the last line here.&lt;/P&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;static void _ENTER_BINARY_L(void) {&amp;nbsp; asm {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PUSH_REGS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; // @i&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHH#ifdef __HCS08__&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDHX 6,SP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; // ra&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHH&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;The command window provides this error:&lt;/P&gt;&lt;P&gt;Error: Attempt to push or pop with SP out of allowed range&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please note that I am&amp;nbsp;not really used to C, and I have spent much more time in VB.Net, Java, and C#.&amp;nbsp; I need to be able to parse integer strings before I can proceed to terminal commands.&amp;nbsp; Thanks for the help.&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Message Edited by jprime on &lt;/SPAN&gt;&lt;SPAN class="date_text"&gt;2008-08-12&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;08:49 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:29:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Classic-Legacy-CodeWarrior/Converting-String-Numbers-to-int-problems-using-atoi-parsing/m-p/179608#M4064</guid>
      <dc:creator>jprime</dc:creator>
      <dc:date>2020-10-29T09:29:11Z</dc:date>
    </item>
    <item>
      <title>Re: Converting String Numbers to int... problems using atoi()  (parsing numbers from a string)</title>
      <link>https://community.nxp.com/t5/Classic-Legacy-CodeWarrior/Converting-String-Numbers-to-int-problems-using-atoi-parsing/m-p/179609#M4065</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&amp;gt;Error: Attempt to push or pop with SP out of allowed range&lt;BR /&gt;&lt;BR /&gt;means: increase the stack size in the prm file, sounds like it runs out of stack space.&lt;BR /&gt;&lt;BR /&gt;(or use another atoi implementation (I think there have been some in the past in this forum), or recompile it with overflow checking disabled)&lt;BR /&gt;&lt;BR /&gt;Daniel&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Aug 2008 03:51:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Classic-Legacy-CodeWarrior/Converting-String-Numbers-to-int-problems-using-atoi-parsing/m-p/179609#M4065</guid>
      <dc:creator>CompilerGuru</dc:creator>
      <dc:date>2008-08-13T03:51:00Z</dc:date>
    </item>
    <item>
      <title>Re: Converting String Numbers to int... problems using atoi()  (parsing numbers from a string)</title>
      <link>https://community.nxp.com/t5/Classic-Legacy-CodeWarrior/Converting-String-Numbers-to-int-problems-using-atoi-parsing/m-p/179610#M4066</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;That did it!&amp;nbsp; Thank you.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Aug 2008 23:15:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Classic-Legacy-CodeWarrior/Converting-String-Numbers-to-int-problems-using-atoi-parsing/m-p/179610#M4066</guid>
      <dc:creator>jprime</dc:creator>
      <dc:date>2008-08-13T23:15:38Z</dc:date>
    </item>
  </channel>
</rss>

