Refactor
:my
=>
'code'
Codes
Refactorings
Popular
Best
Submit
Spam
Account
Logout
Login
JavaScript doesn't seem to be activated, expect things to be ugly and sloppy!
More Jobs
Recent
Too many assignments and conditional statements
Cryptography with RSA and Base64
A Rails rake task to lookup status codes.
Code to detect the web browser
Base class for easy class property handling
Your average file filter...
simplify multiple gsub
Parse XML from Yahoo weather RSS feed
Base64 image encoding and image hash
Query TinyUrl the fastest way
Popular
Code to detect the web browser
simplify multiple gsub
Too many assignments and conditional statements
Your average file filter...
A Rails rake task to lookup status codes.
Query TinyUrl the fastest way
Base64 image encoding and image hash
Parse XML from Yahoo weather RSS feed
Base class for easy class property handling
Cryptography with RSA and Base64
Pastable version of
simplest of mallocs examples
<div style="overflow:auto;border:solid 1px #ccc;background:#000;color:#F8F8F8"> <div class="section"> <pre style="float:left;margin:0 10px;border-right:0;color:#666;">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45</pre> <pre class="sunburst"><span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Transforms a number to a string</span> <span style="color:#AEAEAE;font-style:italic;"> * e.g 1234 => "1234"</span> <span style="color:#AEAEAE;font-style:italic;"> *</span> <span style="color:#AEAEAE;font-style:italic;"> * Pablo A. Torres Navarrete</span> <span style="color:#AEAEAE;font-style:italic;"> * 02-10-07</span> <span style="color:#AEAEAE;font-style:italic;"> <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#8996A8;"># <span style="color:#AFC4DB;">include</span> <span style="color:#65B042;"><span style="color:#65B042;"><</span>stdio.h<span style="color:#65B042;">></span></span></span> <span style="color:#8996A8;"># <span style="color:#AFC4DB;">include</span> <span style="color:#65B042;"><span style="color:#65B042;"><</span>malloc.h<span style="color:#65B042;">></span></span></span> <span style="color:#8996A8;"># <span style="color:#AFC4DB;">include</span> <span style="color:#65B042;"><span style="color:#65B042;"><</span>math.h<span style="color:#65B042;">></span></span></span> <span style="color:#99CF50;">int</span> digcount(<span style="color:#99CF50;">int</span> num); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> counts the digits of <num></span> <span style="color:#89BDFF;">ma<span style="color:#89BDFF;">in</span></span>() { <span style="color:#99CF50;">int</span> num, fact, dig, digits, i; <span style="color:#99CF50;">char</span> *s; <span style="color:#DAD085;">scanf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">%d</span><span style="color:#65B042;">"</span></span>, &num); digits = digcount(num); s = (<span style="color:#99CF50;">char</span> *) <span style="color:#DAD085;">malloc</span>((digits + <span style="color:#3387CC;">1</span>) * <span style="color:#E28964;">sizeof</span>(<span style="color:#99CF50;">char</span>)); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> assign just enough space to hold the number and '\0'</span> s += (digits - <span style="color:#3387CC;">1</span>); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> go to the last address of the memory space assigned</span> *s-- = <span style="color:#65B042;"><span style="color:#65B042;">'</span><span style="color:#DDF2A4;">\0</span><span style="color:#65B042;">'</span></span>; <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> mark the end of the string</span> <span style="color:#E28964;">for</span> (i = <span style="color:#3387CC;">0</span>; i < digits; i++) { dig = num % <span style="color:#3387CC;">10</span>; num /= <span style="color:#3387CC;">10</span>; *s-- = <span style="color:#65B042;"><span style="color:#65B042;">'</span>0<span style="color:#65B042;">'</span></span> + dig; <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> store digit by digit</span> } <span style="color:#DAD085;">printf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">\"</span><span style="color:#DDF2A4;">%s</span><span style="color:#DDF2A4;">\"</span><span style="color:#DDF2A4;">\n</span><span style="color:#65B042;">"</span></span>, ++s); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> after the for, s is pointing to the addres before the start of the string</span> } <span style="color:#99CF50;">int</span> <span style="color:#89BDFF;">digcou<span style="color:#89BDFF;">nt</span></span>(<span style="color:#99CF50;">int</span> num) <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Calculates the number of digits of the parameter using the</span> <span style="color:#AEAEAE;font-style:italic;"> * decimal logarithm property:</span> <span style="color:#AEAEAE;font-style:italic;"> *</span> <span style="color:#AEAEAE;font-style:italic;"> * N = trunc(log(x), 0) + 1, where N is the number of digits of x</span> <span style="color:#AEAEAE;font-style:italic;"> *</span> <span style="color:#AEAEAE;font-style:italic;"> <span style="color:#AEAEAE;font-style:italic;">*/</span></span> { <span style="color:#99CF50;">double</span> ans; ans = <span style="color:#DAD085;">log10</span>(num); ans = <span style="color:#DAD085;">ceil</span>(ans); <span style="color:#E28964;">return</span> (<span style="color:#99CF50;">int</span>) ans; } </pre> </div> </div> <a href="http://refactormycode.com/codes/49-simplest-of-mallocs-examples" style="color:#fff" title="As seen on RefactorMyCode.com"><img alt="Small_logo" src="http://refactormycode.com/images/small_logo.gif" style="border:0" /></a>