⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_29383.htm

📁 vc
💻 HTM
字号:
<p>
序号:29383 发表者:挪威的森林 发表日期:2003-02-06 15:58:58
<br>主题:指针的问题
<br>内容:void reverse_str(char* str) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i, j=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char temp[80];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Tempor&amp;auml;rer String <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;i = strlen(str)-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Laenge des übergebenen Strings bestimmen<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;//und hier <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(i &gt;= 0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Zeichen in umgedrehter <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(temp+j++) = *(str+i--);&nbsp;&nbsp;// Reihenfolge in tempor&amp;auml;ren String<BR>// kopieren<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while( j &gt;= 0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Wieder zurück kopieren<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(str+j) = *(temp+j--);<BR>&nbsp;&nbsp;}<BR>}<BR>是一个字符指针的问题,帮我看看是什么意思,特别是中间的j--
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:tjhe 回复日期:2003-02-06 16:21:05
<br>内容:这个函数是将输入的字符串str进行倒序,如"abcdefg"倒序后为"gfedcba"。<BR><BR>void reverse_str(char* str) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i, j=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char temp[80];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Tempor&amp;auml;rer String <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;i = strlen(str)-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Laenge des übergebenen Strings bestimmen<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;//und hier <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(i &gt;= 0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Zeichen in umgedrehter <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(temp+j++) = *(str+i--);&nbsp;&nbsp;// 将str从后到头拷贝到temp<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while( j &gt;= 0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 将temp拷贝会str<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(str+j) = *(temp+j--);<BR>&nbsp;&nbsp;}<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:挪威的森林 回复日期:2003-02-06 18:00:33
<br>内容:但是我去掉下面的WHILE(J&gt;=0)只输出*TEMP+J++得不到正确值,为什么?还有两个WHILE中间的J--士什么意思。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-02-06 18:13:25
<br>内容:void reverse_str(char* str) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i, j=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char temp[80];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Tempor&amp;auml;rer String <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;i = strlen(str)-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Laenge des übergebenen Strings bestimmen<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;//und hier <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(i &gt;= 0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Zeichen in umgedrehter <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp[j]= *(str+i);&nbsp;&nbsp;// 将str从后到头拷贝到temp<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j++;&nbsp;&nbsp;//temp从前往后,下一个元素<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i--;&nbsp;&nbsp;//str从后往前,下一个元素<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;j--;&nbsp;&nbsp; //经过循环后,j已经移动到末,所以j--,使*(str+j)指向str的最后一个元素<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while( j &gt;= 0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 将temp拷贝会str<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(str+j) = temp[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j--; //从后往前,下一个元素<BR>&nbsp;&nbsp;}<BR>}<BR><BR>可用如下函数替代:<BR><BR>char* reverse_str(char* str)<BR>{<BR>&nbsp;&nbsp; assert(str != NULL);<BR>&nbsp;&nbsp; int len=0;<BR>&nbsp;&nbsp; char* pstr = str;<BR>&nbsp;&nbsp; while(*pstr++ != '\0') len++;&nbsp;&nbsp;//计算机字符串的长度<BR>&nbsp;&nbsp; char temp;<BR>&nbsp;&nbsp; for(int i=0,j=len-1;i&lt;len/2;i++,j--)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp = str[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str[i] = str[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str[j] = temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return str;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -