﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Life is Good.-随笔分类-C字符串函数源码分析</title><link>http://www.cppblog.com/85940806/category/17030.html</link><description>Enhance Tech and English</description><language>zh-cn</language><lastBuildDate>Sat, 11 Jun 2011 18:32:06 GMT</lastBuildDate><pubDate>Sat, 11 Jun 2011 18:32:06 GMT</pubDate><ttl>60</ttl><item><title>15 - memchr</title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148508.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 14:11:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148508.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148508.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148508.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148508.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">**<br />*char&nbsp;*memchr(buf,&nbsp;chr,&nbsp;cnt)&nbsp;-&nbsp;search&nbsp;memory&nbsp;for&nbsp;given&nbsp;character.<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Searches&nbsp;at&nbsp;buf&nbsp;for&nbsp;the&nbsp;given&nbsp;character,&nbsp;stopping&nbsp;when&nbsp;chr&nbsp;is<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first&nbsp;found&nbsp;or&nbsp;cnt&nbsp;bytes&nbsp;have&nbsp;been&nbsp;searched&nbsp;through.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;*buf&nbsp;&nbsp;-&nbsp;memory&nbsp;buffer&nbsp;to&nbsp;be&nbsp;searched<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;chr&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;character&nbsp;to&nbsp;search&nbsp;for<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;cnt&nbsp;-&nbsp;max&nbsp;number&nbsp;of&nbsp;bytes&nbsp;to&nbsp;search<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;pointer&nbsp;to&nbsp;first&nbsp;occurence&nbsp;of&nbsp;chr&nbsp;in&nbsp;buf<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;NULL&nbsp;if&nbsp;chr&nbsp;not&nbsp;found&nbsp;in&nbsp;the&nbsp;first&nbsp;cnt&nbsp;bytes<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;memchr&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;buf,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;chr,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;cnt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(&nbsp;cnt&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(unsigned&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)buf&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;(unsigned&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">)chr)&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(unsigned&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)buf&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(cnt&nbsp;</span><span style="color: #000000; ">?</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)buf&nbsp;:&nbsp;NULL);<br />}</span></div><img src ="http://www.cppblog.com/85940806/aggbug/148508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 22:11 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>14 - memcpy and memmove difference</title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148507.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 14:09:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148507.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148507.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148507.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148507.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">**<br />*memmove&nbsp;-&nbsp;Copy&nbsp;source&nbsp;buffer&nbsp;to&nbsp;destination&nbsp;buffer<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memmove()&nbsp;copies&nbsp;a&nbsp;source&nbsp;memory&nbsp;buffer&nbsp;to&nbsp;a&nbsp;destination&nbsp;memory&nbsp;buffer.<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;routine&nbsp;recognize&nbsp;overlapping&nbsp;buffers&nbsp;to&nbsp;avoid&nbsp;propogation.<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;cases&nbsp;where&nbsp;propogation&nbsp;is&nbsp;not&nbsp;a&nbsp;problem,&nbsp;memcpy()&nbsp;can&nbsp;be&nbsp;used.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;*dst&nbsp;=&nbsp;pointer&nbsp;to&nbsp;destination&nbsp;buffer<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;void&nbsp;*src&nbsp;=&nbsp;pointer&nbsp;to&nbsp;source&nbsp;buffer<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;count&nbsp;=&nbsp;number&nbsp;of&nbsp;bytes&nbsp;to&nbsp;copy<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns&nbsp;a&nbsp;pointer&nbsp;to&nbsp;the&nbsp;destination&nbsp;buffer<br />*<br />*Exceptions:<br />******************************************************************************</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;mymemcpy&nbsp;(<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;dst,<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;src,<br />&nbsp;&nbsp;size_t&nbsp;count<br />&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dst;<br />&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;*&nbsp;copy&nbsp;from&nbsp;lower&nbsp;addresses&nbsp;to&nbsp;higher&nbsp;addresses<br />&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src;<br />&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(ret);<br />}<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;mymemmove&nbsp;(<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;dst,<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;src,<br />&nbsp;&nbsp;size_t&nbsp;count<br />&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dst;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(dst&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;src&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;((</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Non-Overlapping&nbsp;Buffers<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;copy&nbsp;from&nbsp;lower&nbsp;addresses&nbsp;to&nbsp;higher&nbsp;addresses<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Overlapping&nbsp;Buffers<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;copy&nbsp;from&nbsp;higher&nbsp;addresses&nbsp;to&nbsp;lower&nbsp;addresses<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(ret);<br />}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;_tmain(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;argv[])<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">];<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;mymemcpy(</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">],&nbsp;a,&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">6</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,a[i]);<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;mymemmove(</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">],&nbsp;a,&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">6</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,a[i]);<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000;">;<br />}<br /><br /><br />Result:<br />0 1 2 3 0 1 2 3 0 1<br />0 1 2 3 0 1 2 3 4 5<br /><br /></span></div><img src ="http://www.cppblog.com/85940806/aggbug/148507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 22:09 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>13 - memmove</title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148506.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 13:52:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148506.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148506.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148506.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148506.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">**<br />*memmove&nbsp;-&nbsp;Copy&nbsp;source&nbsp;buffer&nbsp;to&nbsp;destination&nbsp;buffer<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memmove()&nbsp;copies&nbsp;a&nbsp;source&nbsp;memory&nbsp;buffer&nbsp;to&nbsp;a&nbsp;destination&nbsp;memory&nbsp;buffer.<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;routine&nbsp;recognize&nbsp;overlapping&nbsp;buffers&nbsp;to&nbsp;avoid&nbsp;propogation.<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;cases&nbsp;where&nbsp;propogation&nbsp;is&nbsp;not&nbsp;a&nbsp;problem,&nbsp;memcpy()&nbsp;can&nbsp;be&nbsp;used.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;*dst&nbsp;=&nbsp;pointer&nbsp;to&nbsp;destination&nbsp;buffer<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;void&nbsp;*src&nbsp;=&nbsp;pointer&nbsp;to&nbsp;source&nbsp;buffer<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;count&nbsp;=&nbsp;number&nbsp;of&nbsp;bytes&nbsp;to&nbsp;copy<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns&nbsp;a&nbsp;pointer&nbsp;to&nbsp;the&nbsp;destination&nbsp;buffer<br />*<br />*Exceptions:<br />******************************************************************************</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;memmove&nbsp;(<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;dst,<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;src,<br />&nbsp;&nbsp;size_t&nbsp;count<br />&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dst;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(dst&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;src&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;((</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Non-Overlapping&nbsp;Buffers<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;copy&nbsp;from&nbsp;lower&nbsp;addresses&nbsp;to&nbsp;higher&nbsp;addresses<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Overlapping&nbsp;Buffers<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;copy&nbsp;from&nbsp;higher&nbsp;addresses&nbsp;to&nbsp;lower&nbsp;addresses<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(ret);<br />}<br /></span></div><img src ="http://www.cppblog.com/85940806/aggbug/148506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 21:52 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>12 - memset </title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148505.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 13:32:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148505.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148505.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148505.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148505.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148505.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">**<br />*char&nbsp;*memset(dst,&nbsp;val,&nbsp;count)&nbsp;-&nbsp;sets&nbsp;"count"&nbsp;bytes&nbsp;at&nbsp;"dst"&nbsp;to&nbsp;"val"<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets&nbsp;the&nbsp;first&nbsp;"count"&nbsp;bytes&nbsp;of&nbsp;the&nbsp;memory&nbsp;starting<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;"dst"&nbsp;to&nbsp;the&nbsp;character&nbsp;value&nbsp;"val".<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;*dst&nbsp;-&nbsp;pointer&nbsp;to&nbsp;memory&nbsp;to&nbsp;fill&nbsp;with&nbsp;val<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;val&nbsp;&nbsp;&nbsp;-&nbsp;value&nbsp;to&nbsp;put&nbsp;in&nbsp;dst&nbsp;bytes<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;count&nbsp;-&nbsp;number&nbsp;of&nbsp;bytes&nbsp;of&nbsp;dst&nbsp;to&nbsp;fill<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;dst,&nbsp;with&nbsp;filled&nbsp;bytes<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;memset&nbsp;(<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">dst,<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;val,<br />&nbsp;&nbsp;size_t&nbsp;count<br />&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">start&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dst;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">)val;<br />&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(start);<br />}</span></div><img src ="http://www.cppblog.com/85940806/aggbug/148505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 21:32 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11 - memcpy</title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148504.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 13:30:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148504.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148504.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148504.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148504.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148504.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">**<br />*memcpy&nbsp;-&nbsp;Copy&nbsp;source&nbsp;buffer&nbsp;to&nbsp;destination&nbsp;buffer<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy()&nbsp;copies&nbsp;a&nbsp;source&nbsp;memory&nbsp;buffer&nbsp;to&nbsp;a&nbsp;destination&nbsp;memory&nbsp;buffer.<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;routine&nbsp;does&nbsp;NOT&nbsp;recognize&nbsp;overlapping&nbsp;buffers,&nbsp;and&nbsp;thus&nbsp;can&nbsp;lead<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;propogation.<br />*<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;cases&nbsp;where&nbsp;propogation&nbsp;must&nbsp;be&nbsp;avoided,&nbsp;memmove()&nbsp;must&nbsp;be&nbsp;used.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;*dst&nbsp;=&nbsp;pointer&nbsp;to&nbsp;destination&nbsp;buffer<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;void&nbsp;*src&nbsp;=&nbsp;pointer&nbsp;to&nbsp;source&nbsp;buffer<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;count&nbsp;=&nbsp;number&nbsp;of&nbsp;bytes&nbsp;to&nbsp;copy<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns&nbsp;a&nbsp;pointer&nbsp;to&nbsp;the&nbsp;destination&nbsp;buffer<br />*<br />*Exceptions:<br />******************************************************************************</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;memcpy&nbsp;(<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;dst,<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;src,<br />&nbsp;&nbsp;size_t&nbsp;count<br />&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dst;<br />&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;*&nbsp;copy&nbsp;from&nbsp;lower&nbsp;addresses&nbsp;to&nbsp;higher&nbsp;addresses<br />&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(count</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src;<br />&nbsp;&nbsp;&nbsp;&nbsp;dst&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)dst&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;src&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)src&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(ret);<br />}</span></div><img src ="http://www.cppblog.com/85940806/aggbug/148504.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 21:30 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148504.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>10 - strupr</title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148503.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 13:18:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148503.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148503.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148503.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148503.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148503.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;_strupr&nbsp;(&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">cp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;traverses&nbsp;string&nbsp;for&nbsp;C&nbsp;locale&nbsp;conversion&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(cp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">cp;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">cp)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">a</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">cp&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">cp&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">z</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">cp&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">A</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">a</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">);<br />}&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;C&nbsp;locale&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span></div><img src ="http://www.cppblog.com/85940806/aggbug/148503.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 21:18 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148503.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>9 - strchr</title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148502.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 13:11:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148502.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148502.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148502.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148502.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148502.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">**<br />*char&nbsp;*strchr(string,&nbsp;c)&nbsp;-&nbsp;search&nbsp;a&nbsp;string&nbsp;for&nbsp;a&nbsp;character<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Searches&nbsp;a&nbsp;string&nbsp;for&nbsp;a&nbsp;given&nbsp;character,&nbsp;which&nbsp;may&nbsp;be&nbsp;the<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;null&nbsp;character&nbsp;'\0'.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*string&nbsp;-&nbsp;string&nbsp;to&nbsp;search&nbsp;in<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;c&nbsp;-&nbsp;character&nbsp;to&nbsp;search&nbsp;for<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;pointer&nbsp;to&nbsp;the&nbsp;first&nbsp;occurence&nbsp;of&nbsp;c&nbsp;in&nbsp;string<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;NULL&nbsp;if&nbsp;c&nbsp;does&nbsp;not&nbsp;occur&nbsp;in&nbsp;string<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;strchr&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ch<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">)ch)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">)ch)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">((</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(NULL);<br />}</span></div><img src ="http://www.cppblog.com/85940806/aggbug/148502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 21:11 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148502.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>8 - strset</title><link>http://www.cppblog.com/85940806/archive/2011/06/11/148501.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Sat, 11 Jun 2011 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/11/148501.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/148501.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/11/148501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/148501.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/148501.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">**<br />*char&nbsp;*_strset(string,&nbsp;val)&nbsp;-&nbsp;sets&nbsp;all&nbsp;of&nbsp;string&nbsp;to&nbsp;val<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets&nbsp;all&nbsp;of&nbsp;characters&nbsp;in&nbsp;string&nbsp;(except&nbsp;the&nbsp;terminating&nbsp;'/0'<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;character)&nbsp;equal&nbsp;to&nbsp;val.<br />*<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*string&nbsp;-&nbsp;string&nbsp;to&nbsp;modify<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;val&nbsp;-&nbsp;value&nbsp;to&nbsp;fill&nbsp;string&nbsp;with<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;string&nbsp;--&nbsp;now&nbsp;filled&nbsp;with&nbsp;val's<br />*<br />*Uses:<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;__cdecl&nbsp;_strset&nbsp;(<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;val<br />&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">start&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">)val;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">(start);<br />}</span></div><img src ="http://www.cppblog.com/85940806/aggbug/148501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-11 21:09 <a href="http://www.cppblog.com/85940806/archive/2011/06/11/148501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>7 - strdup</title><link>http://www.cppblog.com/85940806/archive/2011/06/02/147986.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Thu, 02 Jun 2011 15:16:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/02/147986.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/147986.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/02/147986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/147986.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/147986.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />*char&nbsp;*_strdup(string)&nbsp;-&nbsp;duplicate&nbsp;string&nbsp;into&nbsp;malloc'd&nbsp;memory<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allocates&nbsp;enough&nbsp;storage&nbsp;via&nbsp;malloc()&nbsp;for&nbsp;a&nbsp;copy&nbsp;of&nbsp;the<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string,&nbsp;copies&nbsp;the&nbsp;string&nbsp;into&nbsp;the&nbsp;new&nbsp;memory,&nbsp;and&nbsp;returns<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;pointer&nbsp;to&nbsp;it.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*string&nbsp;-&nbsp;string&nbsp;to&nbsp;copy&nbsp;into&nbsp;new&nbsp;memory<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;a&nbsp;pointer&nbsp;to&nbsp;the&nbsp;newly&nbsp;allocated&nbsp;storage&nbsp;with&nbsp;the<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;in&nbsp;it.<br />*<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;NULL&nbsp;if&nbsp;enough&nbsp;memory&nbsp;could&nbsp;not&nbsp;be&nbsp;allocated,&nbsp;or<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;was&nbsp;NULL.<br />*<br />*Uses:<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;__cdecl&nbsp;_strdup&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">memory;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #0000ff;">string</span><span style="color: #000000;">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(NULL);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(memory&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;malloc(strlen(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(strcpy(memory,</span><span style="color: #0000ff;">string</span><span style="color: #000000;">));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(NULL);<br />}<br /><br /><br /></span></div><img src ="http://www.cppblog.com/85940806/aggbug/147986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-02 23:16 <a href="http://www.cppblog.com/85940806/archive/2011/06/02/147986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>6 - strcat</title><link>http://www.cppblog.com/85940806/archive/2011/06/02/147980.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Thu, 02 Jun 2011 14:18:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/02/147980.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/147980.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/02/147980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/147980.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/147980.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />*char&nbsp;*strcat(dst,&nbsp;src)&nbsp;-&nbsp;concatenate&nbsp;(append)&nbsp;one&nbsp;string&nbsp;to&nbsp;another<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Concatenates&nbsp;src&nbsp;onto&nbsp;the&nbsp;end&nbsp;of&nbsp;dest.&nbsp;&nbsp;Assumes&nbsp;enough<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space&nbsp;in&nbsp;dest.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*dst&nbsp;-&nbsp;string&nbsp;to&nbsp;which&nbsp;"src"&nbsp;is&nbsp;to&nbsp;be&nbsp;appended<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;char&nbsp;*src&nbsp;-&nbsp;string&nbsp;to&nbsp;be&nbsp;appended&nbsp;to&nbsp;the&nbsp;end&nbsp;of&nbsp;"dst"<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;address&nbsp;of&nbsp;"dst"<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;__cdecl&nbsp;strcat&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;dst,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;src<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;cp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;dst; // 得到首地址, 然后遍历到最后, 再copy<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">cp&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cp</span><span style="color: #000000;">++</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;find&nbsp;end&nbsp;of&nbsp;dst&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">cp</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">src</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;Copy&nbsp;src&nbsp;to&nbsp;end&nbsp;of&nbsp;dst&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(&nbsp;dst&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;return&nbsp;dst&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />}<br /><br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br />{&nbsp;<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;s1[]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">abc</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;s2[]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">def</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;my_strcat(s1,&nbsp;s2);<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />}<br /></span></div></div><img src ="http://www.cppblog.com/85940806/aggbug/147980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-02 22:18 <a href="http://www.cppblog.com/85940806/archive/2011/06/02/147980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>5 - strstr</title><link>http://www.cppblog.com/85940806/archive/2011/06/02/147978.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Thu, 02 Jun 2011 14:07:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/02/147978.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/147978.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/02/147978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/147978.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/147978.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />*char&nbsp;*strstr(string1,&nbsp;string2)&nbsp;-&nbsp;search&nbsp;for&nbsp;string2&nbsp;in&nbsp;string1<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finds&nbsp;the&nbsp;first&nbsp;occurrence&nbsp;of&nbsp;string2&nbsp;in&nbsp;string1<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*string1&nbsp;-&nbsp;string&nbsp;to&nbsp;search&nbsp;in<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*string2&nbsp;-&nbsp;string&nbsp;to&nbsp;search&nbsp;for<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;a&nbsp;pointer&nbsp;to&nbsp;the&nbsp;first&nbsp;occurrence&nbsp;of&nbsp;string2&nbsp;in<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string1,&nbsp;or&nbsp;NULL&nbsp;if&nbsp;string2&nbsp;does&nbsp;not&nbsp;occur&nbsp;in&nbsp;string1<br />*<br />*Uses:<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;__cdecl&nbsp;strstr&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;str1,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;str2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">cp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)&nbsp;str1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">s1,&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">s2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #000000;">!*</span><span style="color: #000000;">str2&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">((</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)str1);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">*</span><span style="color: #000000;">cp)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)&nbsp;str2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">s1&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">s2&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">(</span><span style="color: #000000;">*</span><span style="color: #000000;">s1</span><span style="color: #000000;">-*</span><span style="color: #000000;">s2)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s1</span><span style="color: #000000;">++</span><span style="color: #000000;">,&nbsp;s2</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!*</span><span style="color: #000000;">s2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(cp);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cp</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(NULL);<br /><br />}<br /><br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">abcde</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">cd</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;my_strstr(p1,&nbsp;p2);<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />}</span></div></div><img src ="http://www.cppblog.com/85940806/aggbug/147978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-02 22:07 <a href="http://www.cppblog.com/85940806/archive/2011/06/02/147978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>4 - strcmp</title><link>http://www.cppblog.com/85940806/archive/2011/06/02/147977.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Thu, 02 Jun 2011 13:49:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/02/147977.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/147977.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/02/147977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/147977.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/147977.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />*strcmp&nbsp;-&nbsp;compare&nbsp;two&nbsp;strings,&nbsp;returning&nbsp;less&nbsp;than,&nbsp;equal&nbsp;to,&nbsp;or&nbsp;greater&nbsp;than<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STRCMP&nbsp;compares&nbsp;two&nbsp;strings&nbsp;and&nbsp;returns&nbsp;an&nbsp;integer<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;indicate&nbsp;whether&nbsp;the&nbsp;first&nbsp;is&nbsp;less&nbsp;than&nbsp;the&nbsp;second,&nbsp;the&nbsp;two&nbsp;are<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equal,&nbsp;or&nbsp;whether&nbsp;the&nbsp;first&nbsp;is&nbsp;greater&nbsp;than&nbsp;the&nbsp;second.<br />*<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Comparison&nbsp;is&nbsp;done&nbsp;byte&nbsp;by&nbsp;byte&nbsp;on&nbsp;an&nbsp;UNSIGNED&nbsp;basis,&nbsp;which&nbsp;is&nbsp;to<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say&nbsp;that&nbsp;Null&nbsp;(0)&nbsp;is&nbsp;less&nbsp;than&nbsp;any&nbsp;other&nbsp;character&nbsp;(1-255).<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;char&nbsp;*&nbsp;src&nbsp;-&nbsp;string&nbsp;for&nbsp;left-hand&nbsp;side&nbsp;of&nbsp;comparison<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;char&nbsp;*&nbsp;dst&nbsp;-&nbsp;string&nbsp;for&nbsp;right-hand&nbsp;side&nbsp;of&nbsp;comparison<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;-1&nbsp;if&nbsp;src&nbsp;&lt;&nbsp;&nbsp;dst<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;&nbsp;0&nbsp;if&nbsp;src&nbsp;==&nbsp;dst<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;+1&nbsp;if&nbsp;src&nbsp;&gt;&nbsp;&nbsp;dst<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;__cdecl&nbsp;strcmp&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;src,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;dst<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ret&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">&nbsp;(ret&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">(unsigned&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)src&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">(unsigned&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)dst)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">dst)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">src,&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">dst;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;ret&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;ret&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(&nbsp;ret&nbsp;);<br />}<br /><br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">abcde</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">abchd</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;my_strcmp(p1,&nbsp;p2);<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />}</span></div></div><img src ="http://www.cppblog.com/85940806/aggbug/147977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-02 21:49 <a href="http://www.cppblog.com/85940806/archive/2011/06/02/147977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>3 - strlen</title><link>http://www.cppblog.com/85940806/archive/2011/06/02/147976.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Thu, 02 Jun 2011 13:38:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/02/147976.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/147976.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/02/147976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/147976.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/147976.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />*strlen&nbsp;-&nbsp;return&nbsp;the&nbsp;length&nbsp;of&nbsp;a&nbsp;null-terminated&nbsp;string<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Finds&nbsp;the&nbsp;length&nbsp;in&nbsp;bytes&nbsp;of&nbsp;the&nbsp;given&nbsp;string,&nbsp;not&nbsp;including<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;final&nbsp;null&nbsp;character.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;char&nbsp;*&nbsp;str&nbsp;-&nbsp;string&nbsp;whose&nbsp;length&nbsp;is&nbsp;to&nbsp;be&nbsp;computed<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;of&nbsp;the&nbsp;string&nbsp;"str",&nbsp;exclusive&nbsp;of&nbsp;the&nbsp;final&nbsp;null&nbsp;byte<br />*<br />*Exceptions:<br />*<br />******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />size_t&nbsp;__cdecl&nbsp;strlen&nbsp;(&nbsp; </span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;str&nbsp; )<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">eos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;str;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">eos</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;)&nbsp;;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)(eos&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;str&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;);<br />}<br /><br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;str[]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">abcde</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;strlen(str);<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />}</span></div></div><img src ="http://www.cppblog.com/85940806/aggbug/147976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-02 21:38 <a href="http://www.cppblog.com/85940806/archive/2011/06/02/147976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2 - strcpy</title><link>http://www.cppblog.com/85940806/archive/2011/06/02/147957.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Thu, 02 Jun 2011 08:40:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/02/147957.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/147957.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/02/147957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/147957.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/147957.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />*char&nbsp;*strcpy(dst,&nbsp;src)&nbsp;-&nbsp;copy&nbsp;one&nbsp;string&nbsp;over&nbsp;another<br />*<br />*Purpose:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copies&nbsp;the&nbsp;string&nbsp;src&nbsp;into&nbsp;the&nbsp;spot&nbsp;specified&nbsp;by<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest;&nbsp;assumes&nbsp;enough&nbsp;room.<br />*<br />*Entry:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*&nbsp;dst&nbsp;-&nbsp;string&nbsp;over&nbsp;which&nbsp;"src"&nbsp;is&nbsp;to&nbsp;be&nbsp;copied<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;char&nbsp;*&nbsp;src&nbsp;-&nbsp;string&nbsp;to&nbsp;be&nbsp;copied&nbsp;over&nbsp;"dst"<br />*<br />*Exit:<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;address&nbsp;of&nbsp;"dst"<br />*<br />*Exceptions:<br />******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;__cdecl&nbsp;strcpy(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;dst,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;src)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;cp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;dst;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">cp</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">src</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;Copy&nbsp;src&nbsp;over&nbsp;dst&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(&nbsp;dst&nbsp;);<br />}<br /><br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br />{<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;src&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">abc</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;dest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc(strlen(src)</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />&nbsp;&nbsp;memset(dest,&nbsp;</span><span style="color: #000000;">0x00</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(strlen(src)</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">));<br /><br />&nbsp;&nbsp;dest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;"> strcpy(dest,&nbsp;src);<br /><br />&nbsp;&nbsp;free(dest);<br />&nbsp;&nbsp;dest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />}</span></div></div><img src ="http://www.cppblog.com/85940806/aggbug/147957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-02 16:40 <a href="http://www.cppblog.com/85940806/archive/2011/06/02/147957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1 - strrev</title><link>http://www.cppblog.com/85940806/archive/2011/06/01/147903.html</link><dc:creator>Mike Song</dc:creator><author>Mike Song</author><pubDate>Wed, 01 Jun 2011 15:12:00 GMT</pubDate><guid>http://www.cppblog.com/85940806/archive/2011/06/01/147903.html</guid><wfw:comment>http://www.cppblog.com/85940806/comments/147903.html</wfw:comment><comments>http://www.cppblog.com/85940806/archive/2011/06/01/147903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/85940806/comments/commentRss/147903.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/85940806/services/trackbacks/147903.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />
*strrev.c&nbsp;-&nbsp;reverse&nbsp;a&nbsp;string&nbsp;in&nbsp;place<br />
*<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(c)&nbsp;1985-1997,&nbsp;Microsoft&nbsp;Corporation.&nbsp;All&nbsp;rights&nbsp;reserved.<br />
*<br />
*Purpose:<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defines&nbsp;_strrev()&nbsp;-&nbsp;reverse&nbsp;a&nbsp;string&nbsp;in&nbsp;place&nbsp;(not&nbsp;including<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\0'&nbsp;character)<br />
*<br />
******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
<br />
#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cruntime.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #008000;">/*</span><span style="color: #008000;">**<br />
*char&nbsp;*_strrev(string)&nbsp;-&nbsp;reverse&nbsp;a&nbsp;string&nbsp;in&nbsp;place<br />
*<br />
*Purpose:<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reverses&nbsp;the&nbsp;order&nbsp;of&nbsp;characters&nbsp;in&nbsp;the&nbsp;string.&nbsp;&nbsp;The&nbsp;terminating<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;null&nbsp;character&nbsp;remains&nbsp;in&nbsp;place.<br />
*<br />
*Entry:<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*string&nbsp;-&nbsp;string&nbsp;to&nbsp;reverse<br />
*<br />
*Exit:<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;string&nbsp;-&nbsp;now&nbsp;with&nbsp;reversed&nbsp;characters<br />
*<br />
*Exceptions:<br />
*<br />
******************************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;__cdecl&nbsp;_strrev&nbsp;(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;此段程序的start/left/string&nbsp;都在同一块内存中,&nbsp;start记录的是起始地址,未变动过<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;left和string&nbsp;由于要交换数据,&nbsp;所以会有变化</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">start&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">left&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;ch;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">*</span><span style="color: #0000ff;">string</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;find&nbsp;end&nbsp;of&nbsp;string&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;指针后退2,&nbsp;得到最后一个字符的指针地址.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;此段逻辑就是&nbsp;前后字符交换,&nbsp;比如&nbsp;"abcde":<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;第一次循环,&nbsp;a&nbsp;和&nbsp;e&nbsp;交换后&nbsp;变成ebcda,&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;第二次循环b和d交换,&nbsp;变成edcba,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;第三次由于left==string,&nbsp;故循环停止.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(left&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">left;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">left</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #0000ff;">string</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;此处可分解为两步更好理解:&nbsp;*left&nbsp;=*sting;&nbsp;left++;&nbsp;把值付给*left,&nbsp;然后left向后移位</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #0000ff;">string</span><span style="color: #000000;">--</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ch;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;同上:&nbsp;*string&nbsp;=&nbsp;ch;&nbsp;string--;&nbsp;把值付给*string,&nbsp;然后string向前移位</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">(start);<br />
}<br />
<br />
<br />
另外一种利用strlen函数来得到字符串长度的方法, 其原理跟上面的相同: 首尾依次交换到中间为止.<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;my_strrev(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p)<br />
{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;strlen(p);<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;ch;<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;j;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">,&nbsp;j</span><span style="color: #000000;">--</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;ch&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;p[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;p[j]</span><span style="color: #000000;">=</span><span style="color: #000000;">ch;<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;p;<br />
}<br />
<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br />
{<br />
&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;此处不能定义为char*&nbsp;p&nbsp;=&nbsp;"abcde";<br />
&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;因为在strrev里面要修改p的内容.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;p[]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">abcde</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;strrev(p);<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;my_strrev(p);<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
}</span></div>
</div>
</div><img src ="http://www.cppblog.com/85940806/aggbug/147903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/85940806/" target="_blank">Mike Song</a> 2011-06-01 23:12 <a href="http://www.cppblog.com/85940806/archive/2011/06/01/147903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>