﻿<?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++博客-continue123456</title><link>http://www.cppblog.com/continue123456/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 06 Apr 2026 03:38:42 GMT</lastBuildDate><pubDate>Mon, 06 Apr 2026 03:38:42 GMT</pubDate><ttl>60</ttl><item><title>关于errno</title><link>http://www.cppblog.com/continue123456/archive/2013/07/06/201570.html</link><dc:creator>烽火依然</dc:creator><author>烽火依然</author><pubDate>Sat, 06 Jul 2013 11:21:00 GMT</pubDate><guid>http://www.cppblog.com/continue123456/archive/2013/07/06/201570.html</guid><wfw:comment>http://www.cppblog.com/continue123456/comments/201570.html</wfw:comment><comments>http://www.cppblog.com/continue123456/archive/2013/07/06/201570.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/continue123456/comments/commentRss/201570.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/continue123456/services/trackbacks/201570.html</trackback:ping><description><![CDATA[<span style="color: red;"><div><span style="color: #000000; font-family: arial, 宋体, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 30px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none;">errno是在errno.h中定义的一个整型变量，<br />当且仅当库函数执行失败时，errno被设置，<br />errno中保存错误代码( int型的值 )，具体错误信息可以调用perror()或strerror()输出。<br />errno 记录系统的最后一次</span><span style="color: #000000;">错误代码</span><span style="color: #000000; font-family: arial, 宋体, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 30px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none;">。<br /><br /></span></div>注意：errno是在已经知道出错的情况下，表示出错类型的；最好不要拿它来作为判断是否出错的依据。</span><br /><br /><strong>正确用法：</strong><br />1.如果函数本身返回一个指示调用成功与否的值，则先用这个值判断是否失败，如果确定失败，在根据errno判断失败类型。&nbsp;例：<br /><br /><p>&nbsp;</p><div>res = func();<br />if( res == 某个失败值 )<br />{<br />&nbsp;&nbsp; printf("errno = %d\n",errno );<br />}</div><p>&nbsp;</p><p>2.调用函数前先手动设置errno = 0。例：</p><p><br /></p>errno = 0;<br />func();<br />//这个时候errno就能说明问题了。<br />if( 0 == errno )<br />&nbsp;&nbsp; printf( "succeed" );<br />else<br />&nbsp;&nbsp; printf( "failed" ); <br /><br /><br /><strong>错误用法</strong>：<br />func();<br />if( 0 != errno )<br />&nbsp;&nbsp; printf( "something wrong!" );<br /><br />原因：<br />error只有在调用失败的时候才会被修改，调用成功的时候不会被修改；<br />当errno = 0 时，不能确定调用成功，也有可能是前面的代码把errno设置成了0；<br />当errno &lt; 0 时，不能确定调用失败，也有可能是上次调用失败遗留下来的结果。<br /><img src ="http://www.cppblog.com/continue123456/aggbug/201570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/continue123456/" target="_blank">烽火依然</a> 2013-07-06 19:21 <a href="http://www.cppblog.com/continue123456/archive/2013/07/06/201570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第七章 函数（一）</title><link>http://www.cppblog.com/continue123456/archive/2013/07/03/201487.html</link><dc:creator>烽火依然</dc:creator><author>烽火依然</author><pubDate>Wed, 03 Jul 2013 04:38:00 GMT</pubDate><guid>http://www.cppblog.com/continue123456/archive/2013/07/03/201487.html</guid><wfw:comment>http://www.cppblog.com/continue123456/comments/201487.html</wfw:comment><comments>http://www.cppblog.com/continue123456/archive/2013/07/03/201487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/continue123456/comments/commentRss/201487.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/continue123456/services/trackbacks/201487.html</trackback:ping><description><![CDATA[<strong>函数</strong>：<br />是用于完成特定任务的程序代码的自包含单元。<br /><br /><strong>函数分类：</strong><br />真函数：返回一个值的函数。<br />过程类型的函数：无返回值。<br /><br />函数定义：函数体的实现，函数体是一个代码块，它在函数被调用时执行。<br />函数声明：提高了编译器在函数调用时检查错误的能力。<br /><br /><strong>函数参数：</strong><br />c函数的所有参数均以"传值调用"方式进行传递，值意味着函数将获得函数值的一份拷贝。<br />当传递指针时也是拷贝指针值，只不过指针指向的位置是一样的。<br /><br /><strong>ADT和黑盒：</strong><br />ADT,abstact data type, 抽象数据类型，它可以限制函数和数据定义的作用域。这个技巧被称为黑盒（block box）设计。<br />抽象数据类型的想法是很简单的：模块具有功能说明和接口说明，前者说明模块所执行的任务，后者定义模块的使用。<br /><br /><strong>递归与迭代：</strong><br />递归：优点在于为某些编程问题提供了最简单的解决方法，缺点是一些递归算法会很快耗尽计算机内存资源，同时使用递归程序难于阅读和维护。<br />尾递归：最简单的递归形式，即把递归调用语句放在函数结尾（恰在return语句之前），尾递归可以很容易转换成一个简单循环（效率高很多）。<br /><br /><strong>递归所需两个特性：</strong><br />1.存在限制条件，当符合这个条件时递归便不再继续。<br />2.每次递归后越来越接近这个限制条件。<br /><br /><strong>注意：</strong><br />1.形参表为空时，填入void表明函数没有任何参数(避免编译器误认为函数是旧式函数声明或定义).<br />2.函数名与函数返回类型分两行书写，这种写法更容易查找函数名。<br />3.<span style="color: red;">值的类型不是值的内在本质，而是取决于它被使用的方式。</span><br />4.一个值的类型无法简单的通过检查它的位模式来判断，机器无法识别，编译器告诉它怎么做它就怎么做。<br />5.传递数组名时，函数得到的只是一个指针（数组名拷贝），如果需要使用数组长度，需通过函数参数显示指定，在函数体内用sizeof计算得到的只是指针的长度（一般为4）。<img src ="http://www.cppblog.com/continue123456/aggbug/201487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/continue123456/" target="_blank">烽火依然</a> 2013-07-03 12:38 <a href="http://www.cppblog.com/continue123456/archive/2013/07/03/201487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搜索技巧</title><link>http://www.cppblog.com/continue123456/archive/2013/07/02/201474.html</link><dc:creator>烽火依然</dc:creator><author>烽火依然</author><pubDate>Tue, 02 Jul 2013 15:21:00 GMT</pubDate><guid>http://www.cppblog.com/continue123456/archive/2013/07/02/201474.html</guid><wfw:comment>http://www.cppblog.com/continue123456/comments/201474.html</wfw:comment><comments>http://www.cppblog.com/continue123456/archive/2013/07/02/201474.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/continue123456/comments/commentRss/201474.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/continue123456/services/trackbacks/201474.html</trackback:ping><description><![CDATA[<strong>google搜索技巧</strong>（大部分百度也可用）<br />1.filetype:<br />只搜索指定类型的文档，可以用来搜索pdf，doc，jpg等类型的文档。<br />2.intile：<br />只显示标题中包含指定关键词的搜索结果。<br />3.site:[网址]<br />只搜索某个网站的页面。<br />4." "<br />以整个短语作为搜索关键词，而不是拆开成每个词。<br />5. -<br />排除整个关键词。<br />6. ~<br />同时搜索近义词。<br />7.&nbsp;&nbsp; ..<br />显示指定范围内的搜索结果。<br />8. *<br />星号用来代替任意字符。<br />9. author：<br />搜索特指作者。<br />10.define：<br />搜索特定字词定义。<br />11.数学计算<br />直接输入公式就可得到结果。<br />12.单位换算<br />例：54磅=？公斤。<br /><br /><strong>google快捷键：</strong><br />(说明：C=ctrl, M=alt)<br /><strong></strong>C+N&nbsp; 打开新窗口<br />M+F4&nbsp; 关闭当前窗口<br />C+T/C+W 打开新标签页/关闭标签页<br />C+shift+T 重新打开上次关闭的标签页，最多可记得10个标签页<br />C+O&nbsp; 打开计算机上的文件<br /><br />按住ctrl，然后点击链接&nbsp;&nbsp; 从后台在新标签页中打开链接，但仍停留在原标签页中<br />按ctrl+shift，然后点击链接&nbsp;&nbsp;&nbsp; 在新标签页中打开链接，同时切换到新标签页<br />按shift，然后点击链接&nbsp; 在新窗口中打开链接<br /><br />C+Tab 或 C+pgDown&nbsp; 切换到下一个标签页<br />C+Shift+Tab 或 C+PgUp&nbsp; 切换到上一个标签页<br />C+9 切换到最后一个标签页<br />C+1到C+8切换到指定位置编号的标签页<br /><br />M+Home 打开主页<br /><br />C+L 或 F6 或 M+D 选中网址区域中的内容<br />键入网址，然后按alt+Enter 在新标签页中打开网址<br />键入网址中www. 和 .com 之间的部分，然后按C+Enter&nbsp; 自动在地址栏中补足地址然后打开网址<br /><br />在地址栏中键入搜索引擎关键字或网址，再按Tab，然后输入搜索字词 ：使用指定搜索引擎进行搜索<br /><br />C+J&nbsp; 查看"下载"页<br />C+H&nbsp; 查看"历史记录"页<br />C+B&nbsp; 打开和关闭书签栏<br />C+Shift+B&nbsp; 打开书签管理器<br />Shift+Esc 查看任务管理器（浏览器）, firefox不支持<br />Shift+M+T 将焦点设置在工具栏上。使用键盘上的左右箭头，可导航至工具栏上的不同按钮<br /><br />C+P 打印当前页<br />C+S 保存当前页<br />F5&nbsp;&nbsp; 刷新<br />Esc 停止加载当前页<br /><br />C+F 打开"在网页上查找"框<br />C+U 查看源代码<br />C+D 将当前页加入书签<br /><br />C++ 放大网页上的所有内容<br />C+- 缩小网页上的所有内容<br />按Ctrl并上下滚动鼠标滚轮&nbsp;&nbsp; 放大/缩小网页上的所有内容<br />C+0 将网页上的所有内容都恢复到正常大小<br /><br />C+C 复制<br />C+V 或Shift+Insert&nbsp; 从剪贴板黏贴当前内容<br />C+Shift+V 从剪贴板黏贴当前内容的纯文本部分<br />C+X 或Shift+Delete 删除内容并将其复制到剪贴板<img src ="http://www.cppblog.com/continue123456/aggbug/201474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/continue123456/" target="_blank">烽火依然</a> 2013-07-02 23:21 <a href="http://www.cppblog.com/continue123456/archive/2013/07/02/201474.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第七章 函数（二）</title><link>http://www.cppblog.com/continue123456/archive/2013/07/01/201440.html</link><dc:creator>烽火依然</dc:creator><author>烽火依然</author><pubDate>Mon, 01 Jul 2013 15:14:00 GMT</pubDate><guid>http://www.cppblog.com/continue123456/archive/2013/07/01/201440.html</guid><wfw:comment>http://www.cppblog.com/continue123456/comments/201440.html</wfw:comment><comments>http://www.cppblog.com/continue123456/archive/2013/07/01/201440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/continue123456/comments/commentRss/201440.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/continue123456/services/trackbacks/201440.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 可变函数可变参数列表通过宏来实现，定义于stdarg.h头文件，是标准库的一部分。这个头文件声明了一个类型va_list和三个宏--va_start、va_arg和va_end。声明一个类型为va_list的变量，与几个宏配合使用，访问参数的值。函数的使用方法必须按如下步骤进行：1.在函数原型中使用省略号。2.在函数定义中创建一个va_list类型的变量。3.用宏将该变量初始化为一个参数列表。4....&nbsp;&nbsp;<a href='http://www.cppblog.com/continue123456/archive/2013/07/01/201440.html'>阅读全文</a><img src ="http://www.cppblog.com/continue123456/aggbug/201440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/continue123456/" target="_blank">烽火依然</a> 2013-07-01 23:14 <a href="http://www.cppblog.com/continue123456/archive/2013/07/01/201440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第九章 字符串、字符和字节</title><link>http://www.cppblog.com/continue123456/archive/2013/06/25/201278.html</link><dc:creator>烽火依然</dc:creator><author>烽火依然</author><pubDate>Tue, 25 Jun 2013 11:49:00 GMT</pubDate><guid>http://www.cppblog.com/continue123456/archive/2013/06/25/201278.html</guid><wfw:comment>http://www.cppblog.com/continue123456/comments/201278.html</wfw:comment><comments>http://www.cppblog.com/continue123456/archive/2013/06/25/201278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/continue123456/comments/commentRss/201278.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/continue123456/services/trackbacks/201278.html</trackback:ping><description><![CDATA[<div align="center"><span><strong>需要注意的一些知识点</strong></span><br /><span></span></div><span><strong><br /></strong>字符串：一串零个或多个字符，并且以一个位模式为全0的NUL字节结尾。<br />字符串长度：所包含的字符个数（不包括NUL字节）。<br /><br />无符号数在使用时需要特别注意：<br />如：<br /></span>&nbsp;&nbsp; if( strlen( x ) &gt;= strlen( y ) )...<br />&nbsp;&nbsp; if( strlen( x ) - strlen( y ) &gt;= 0 )...<br />其中第一条语句可以按照预想的那样工作，但是第二条语句结果永远是真。<br />（说明：strlen返回size_t类型）<span style="color: red;"><span><br /><br /></span></span><div align="center"><span style="color: red;"><strong><span style="color: #000000;">基础函数</span></strong></span><br /><br /><div align="left">char *strlen( char const *string );<br />char *strcpy( char *dst, char const *src );<br />char *strcat( char *dst, char const *src );<br />int strcmp( char const *s1, char const *s2 );<br />注意：strcpy,strcat不保证返回的是一个合法的字符串，程序员必须自己保证dst能够容纳字符串。<br /><br />长度受限字符串函数<br />char *strncpy(char *dst, char const *src, size_t len );<br />（src &lt; dst ,将会以NUL填充到len长度，若src&gt;dst,结果不会以NUL字节结尾）<br />char *strncat( char *dst, char const *src, size_t len);<br />（最多向dst中复制len个字符，并以NUL字节结尾，但不管复制后长度是否溢出，需程序员字节保证）<br />int strncmp( char const *s1, char const *s2, size_t len );<br /><br />内存操作<br />void *memcpy( void *dst, void const *src, size_t length );<br />void *memmove( void *dst, void const *src, size_t length );（允许字符串重叠，其余函数对重叠均无定义）<br />void *memcmp( void const *a, void const *b, size_t length );<br />void *memchr( void const *a, int ch, size_t length );<br />void *memset( void *a, int ch, size_t length );<br /><br />字符操作:使用字符操作函数能提高程序的可移植性。<br />字符分类函数<br />iscntrl 任何控制字符<br />isspace 空白字符：空格' ', 换页'\f', 换行'\n', 回车'\r', 制表符'\t', 垂直制表符'\v'<br />isdigit 十进制数字0~9<br />isxdigit 十六进制数字，0~9 a~f A~F<br />islower 小写字母a~z<br />isupper 大写字母A~Z<br />isalpha a~z A~Z<br />isalnum 字母或数字 a~z A~Z 0~9<br />ispunct 标点符号，任何不属于数字或字母的图形字符（可打印符号）<br />isgraph 任何图形字符<br />isprint 任何可打印字符，包括图形字符和空白字符<br /><br />字符转换<br />int tolower( int ch );<br />int toupper( int ch );<br />注意：如果函数的参数并不是处于适当大小写状态的字符（即toupper的参数不是小写字母或tolower的参数不是大写字母），函数将不修改参数直接返回。<br /><br /></div><span style="color: red;"><strong><span></span></strong></span><span style="color: red;"><span style="color: #000000;"></span></span><strong><span>高级函数</span></strong><span style="color: red;"></span></div><span style="color: red;"></span><div align="center"><span style="color: red;"></span></div><span style="color: red;"><br /></span><span style="color: red;">1.查找一个字符</span><br />/*<br />**返回指向第一个在str中出现的ch的位置的指针。<br />*/<br />char&nbsp; *strchr( char const *str, int ch );<br />例：&nbsp;&nbsp; <br /><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: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">[</span><span style="color: #000000; ">20</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; ">Hello&nbsp;there,&nbsp;honey.</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">2</span>&nbsp;<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; ">ans;<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;strchr(&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">h</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;);</span></div>结果：ans = string+7;<br /><br />/*<br />**返回指向最后一个在str中出现的ch的位置的指针。<br />*/<br />char&nbsp; *strrchr( char const *str, int ch );<br /><br /><span style="color: red;">2.</span><span style="color: red;">查找任何几个字符</span><br />/*<br />**返回指向str中第一个匹配group中任何字符的字符位置。<br />*/<br />char&nbsp; *strpbrk( char const *str, char const *group );<br />例：<br /><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: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">[</span><span style="color: #000000; ">20</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; ">Hello&nbsp;there,&nbsp;honey.</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">2</span>&nbsp;<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; ">ans;<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;strpbrk(&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">aeiou</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;);</span></div>结果：ans=string+1;<br /><br /><span style="color: red;">3.查找一个子串</span><br />/*<br />**返回s2在s1中第一次出现的起始位置的指针。<br />**如果s2在s1中没有出现，返回NULL。<br />**如果s2为空字符串，返回s1。<br />*/<br />char&nbsp; *strstr( char const *s1, char const *s2 );<br /><br /><div><span style="color: red;">注意：不存在strstr或strrpbrk函数。</span></div>但是可以很容易实现，如：<br /><a href="/Files/continue123456/my_strrstr.txt" title="查找子串最右一次出现的位置">查找子串最右一次出现的位置</a><br /><br /><span style="color: red;">4.查找一个字符串前缀</span><br />/*<br />**返回str起始部分匹配group中任意字符的字符数。<br />*/<br />size_t&nbsp; strspn( char const *str, char const *group );<br />例：<br /><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: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;len1,len2;<br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;buffer[]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">25,142,330,Smith,j,239-4132</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #000000; ">len1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;strspn(&nbsp;buffer,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">0123456789</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">5</span>&nbsp;<span style="color: #000000; ">len2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;strspn(&nbsp;buffer,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,0123456789</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);</span></div>结果：len1 = 2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len2 = 11;<br />例2：<a target="null"></a><br />//计算一个指向字符串中第一个非空白字符的指针。<br />ptr = buffer + strspn( buffer, "\n\r\f\t\v" );<br /><br />/*<br />**返回str起始部分不与group中任意字符匹配的字符数。<br />*/<br />size_t&nbsp; strcspn( char const *str, char cosnt *group );<br /><br /><span style="color: red;">5.查找标记</span><br />/*<br />**实现从字符串str中隔离（提取）各个单独的称为token的部分，并丢弃分隔符（在sep中出现的字符）。<br />*/<br />char *strtok( char *str, char const *sep );<br />例：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><img id="Code_Closed_Image_194852" onclick="this.style.display='none'; Code_Closed_Text_194852.style.display='none'; Code_Open_Image_194852.style.display='inline'; Code_Open_Text_194852.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_194852" style="display: none" onclick="this.style.display='none'; Code_Open_Text_194852.style.display='none'; Code_Closed_Image_194852.style.display='inline'; Code_Closed_Text_194852.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_194852" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">print_tokens.c<br /></span><span id="Code_Open_Text_194852" style="display: none"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; ">**从一个字符数组中提取空白字符分隔的token<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; ">**并把他们打印出来（每行一个）。<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;stdio.h&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">print_tokens(&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">line&nbsp;)<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;whitespace[]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\t\f\r\v\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&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; ">token;<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(&nbsp;token&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;strtok(&nbsp;line,&nbsp;whitespace&nbsp;);<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;NULL;<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;token(&nbsp;NULL,&nbsp;whitespace&nbsp;))<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Next&nbsp;token&nbsp;is&nbsp;%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;token&nbsp;);<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; "></span></span></div><img src ="http://www.cppblog.com/continue123456/aggbug/201278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/continue123456/" target="_blank">烽火依然</a> 2013-06-25 19:49 <a href="http://www.cppblog.com/continue123456/archive/2013/06/25/201278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux环境下关于文件及目录的压缩与解压缩</title><link>http://www.cppblog.com/continue123456/archive/2013/06/24/201267.html</link><dc:creator>烽火依然</dc:creator><author>烽火依然</author><pubDate>Mon, 24 Jun 2013 08:31:00 GMT</pubDate><guid>http://www.cppblog.com/continue123456/archive/2013/06/24/201267.html</guid><wfw:comment>http://www.cppblog.com/continue123456/comments/201267.html</wfw:comment><comments>http://www.cppblog.com/continue123456/archive/2013/06/24/201267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/continue123456/comments/commentRss/201267.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/continue123456/services/trackbacks/201267.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;</p>
<table style="width: 721px; height: 393px" border="1" cellspacing="2" bordercolor="#ff0000" cellpadding="2" width="721">
<tbody>
<tr>
<td><br /></td>
<td>后缀</td>
<td>使用</td>
<td>&nbsp;解压缩</td>
<td>对象</td>
<td>&nbsp;压缩后文件大小</td>
<td>说明</td></tr>
<tr>
<td>gzip</td>
<td>&nbsp;.gz</td>
<td style="width: 121px; height: 84px">gzip+文件名</td>
<td>&nbsp;gunzip+ 文件名</td>
<td>文件</td>
<td>&nbsp;与.bz2格式差不多</td>
<td>
<p>1.可先用tar命令打包文件，再进行压缩；</p>
<p>2.文件压缩后不保留源文件</p></td></tr>
<tr>
<td>zip</td>
<td>.zip</td>
<td>
<p>1.zip+文件</p>
<p>2.zip -r +目录</p></td>
<td>unzip+dst+src(目录或文件)</td>
<td style="height: 31px">文件/目录</td>
<td>&nbsp;最大</td>
<td>
<p>会保留原文件</p>
<p>是win和linux的通用格式</p></td></tr>
<tr>
<td>bzip2</td>
<td>.bz2</td>
<td>
<p>1.bzip2 -k +文件</p>
<p>2.bzip2 +文件</p></td>
<td>bunzip2+文件</td>
<td>文件</td>
<td>&nbsp;最小</td>
<td style="width: 207px; height: 245px">
<p>加选项 -k 则会保留原文件</p>
<p>否则，与gzip命令无差别</p></td></tr></tbody></table><br /><br />
<p>&nbsp;</p><img src ="http://www.cppblog.com/continue123456/aggbug/201267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/continue123456/" target="_blank">烽火依然</a> 2013-06-24 16:31 <a href="http://www.cppblog.com/continue123456/archive/2013/06/24/201267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu12.10下安装ibus--安装中文输入法</title><link>http://www.cppblog.com/continue123456/archive/2013/03/30/198953.html</link><dc:creator>烽火依然</dc:creator><author>烽火依然</author><pubDate>Sat, 30 Mar 2013 10:07:00 GMT</pubDate><guid>http://www.cppblog.com/continue123456/archive/2013/03/30/198953.html</guid><wfw:comment>http://www.cppblog.com/continue123456/comments/198953.html</wfw:comment><comments>http://www.cppblog.com/continue123456/archive/2013/03/30/198953.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/continue123456/comments/commentRss/198953.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/continue123456/services/trackbacks/198953.html</trackback:ping><description><![CDATA[<ol><li>安装ibus框架，终端输入以下命令：sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4</li><li>启用ibus框架：im-switch -s ibus</li><li>重启电脑或注销当前用户</li><li>设置ibus框架：ibus-setup（此时会出现对话框）</li><li>选择input标签页，打钩复选框（customize active input methods）,在（select&nbsp;an input method)当中选择想要的输入法，默认为"pinyin"和"Bopomofo"两种。（当然也可以在dash home中输入ibus 会出现两个选项：ibus和keyboard input methods;选择后者进行操作）</li></ol> <img src ="http://www.cppblog.com/continue123456/aggbug/198953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/continue123456/" target="_blank">烽火依然</a> 2013-03-30 18:07 <a href="http://www.cppblog.com/continue123456/archive/2013/03/30/198953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>