2 chenyonken chenyonken 于 2016.04.07 22:14 提问

字符创反转内容出错问题

使用注释的三条代码和正在使用的三条代码为什么会得到不同的结果,注释代码得到dccd,另一条得到dcba;

 #include<iostream>
using namespace std;

int reverce(char *str)
{
    if(str==NULL)
    {
        return -1;
    }
    char *p1=str;
    int length=strlen(str);
    char *p2=str+length-1;
    while(p2>p1)
    {
        char temp=*p1;
        *p1=*p2;
        *p2=temp;**
        //char *temp=p1;
        //*p1=*p2;
        //*p2=*temp;
        ++p1;
        --p2;
    }
}

void main()
{
    char buf[]="abcd";
    reverce(buf);
    cout<<buf<<endl;
}

4个回答

caozhy
caozhy   Ds   Rxr 2016.04.07 23:07

注释的代码,temp没有把p1的值缓冲起来,只是保存了指针,当*p1=*p2的时候,此时p1已经被换成了p2,对应的*temp得到的也是p2

CSDNXIAON
CSDNXIAON   2016.04.07 22:22

反转问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

luochoudan
luochoudan   Ds   Rxr 2016.04.07 23:43

采纳caozhy同学的,应该就是这个原因,两者的指针并没有交换。

MEIYOUDAO_JIUSHIDAO
MEIYOUDAO_JIUSHIDAO   2016.04.10 14:49

没有另存*p1的值,画下图吧。。。。。。。。。。。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
字符串的几种常见的反转
字符串的几种常见的反转: 提到字符串的反转,最先想到的应该是StringBuiler的reverse()的方法,方便快捷。但有时我们也需要自己写一些反转的代码。 第一种  通过String类的charAt()的方法来获取字符串中的每一个字符,然后将其拼接为一个新的字符串。 /** * 该方法是通过charAt()方法获得每一个char的字符,i=0时获得第一个字符a然后赋值给rev
Python中的字符串反转
性能最佳者 推荐方法,使用切片:slice def reversed_string(a_string): return a_string[::-1]可读性强def reverse_string_readable_answer(string): return ''.join(reversed(string))中规中矩 这种做法其实非常不推荐的,因为,记住,Python中字符串是
字符串反转 / 按位异或交换值解析
// // main.cpp // Test // // Created by Lee on 15-3-10. // Copyright (c) 2015年 Lee. All rights reserved. // #include char* reversal(char* src) { char *start = src; char *end = star
字符串翻转练习—三步翻转法
文章出处:github 题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。 三步反转法 对于这个问题,换一个角度思考一下。 将一
C语言实现字符的反转输出
函数调用实现,用到了字符指针:#include <stdio.h> #include <string.h> void reverse(char* str) { char* p = str + strlen(str)-1; char temp; while(str<p) temp=*p, *p--=*str, *str++=temp; } void mai
[C#]几种字符串反转方法效率比较
下面是实现字符串反转的四种方法:            static string Reverse1(string original)            ...{                char[] arr = original.ToCharArray();                Array.Reverse(arr);                return new
java字符串操作:如何实现字符串的反转及替换?
可用字符串构造一 StringBuffer 对象,然后调用 StringBuffer 中的 reverse 方法即可实现字符串的反转,调用 replace 方法即可实现字符串的替换。public class test { public static void main(String[] args) { StringBuffer sb=new StringBuffer("hel
unicode反转字符 使用教程
unicode反转字符 利用windows扩展名漏洞,达到欺骗的目的的使用教程。
字符串反转的几种方式
string,stack
Java对话框实现字符串反转,字符串大小写转换的程序实现
import javax.swing.JOptionPane; public class InputDialogTest{ public static void main(String[] args){ String inputString=JOptionPane.showInputDialog(null,"请输入一个英文单词","输入",JOptionPane.QUESTION_M