📄 subject_29383.htm
字号:
<p>
序号:29383 发表者:挪威的森林 发表日期:2003-02-06 15:58:58
<br>主题:指针的问题
<br>内容:void reverse_str(char* str) {<BR> <BR> int i, j=0;<BR> char temp[80]; // Tempor&auml;rer String <BR> <BR> i = strlen(str)-1; // Laenge des übergebenen Strings bestimmen<BR> //und hier <BR> <BR> while(i >= 0){ // Zeichen in umgedrehter <BR> *(temp+j++) = *(str+i--); // Reihenfolge in tempor&auml;ren String<BR>// kopieren<BR>}<BR> j--;<BR> <BR> while( j >= 0){ // Wieder zurück kopieren<BR> *(str+j) = *(temp+j--);<BR> }<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> <BR> int i, j=0;<BR> char temp[80]; // Tempor&auml;rer String <BR> <BR> i = strlen(str)-1; // Laenge des übergebenen Strings bestimmen<BR> //und hier <BR> <BR> while(i >= 0){ // Zeichen in umgedrehter <BR> *(temp+j++) = *(str+i--); // 将str从后到头拷贝到temp<BR> }<BR> j--;<BR> <BR> while( j >= 0){ // 将temp拷贝会str<BR> *(str+j) = *(temp+j--);<BR> }<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>=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> <BR> int i, j=0;<BR> char temp[80]; // Tempor&auml;rer String <BR> <BR> i = strlen(str)-1; // Laenge des übergebenen Strings bestimmen<BR> //und hier <BR> <BR> while(i >= 0){ // Zeichen in umgedrehter <BR> temp[j]= *(str+i); // 将str从后到头拷贝到temp<BR> j++; //temp从前往后,下一个元素<BR> i--; //str从后往前,下一个元素<BR> }<BR> j--; //经过循环后,j已经移动到末,所以j--,使*(str+j)指向str的最后一个元素<BR> <BR> while( j >= 0){ // 将temp拷贝会str<BR> *(str+j) = temp[j];<BR> j--; //从后往前,下一个元素<BR> }<BR>}<BR><BR>可用如下函数替代:<BR><BR>char* reverse_str(char* str)<BR>{<BR> assert(str != NULL);<BR> int len=0;<BR> char* pstr = str;<BR> while(*pstr++ != '\0') len++; //计算机字符串的长度<BR> char temp;<BR> for(int i=0,j=len-1;i<len/2;i++,j--)<BR> {<BR> temp = str[i];<BR> str[i] = str[j];<BR> str[j] = temp;<BR> }<BR> 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 + -