指针-字符创反转内容出错问题

问题描述

字符创反转内容出错问题

使用注释的三条代码和正在使用的三条代码为什么会得到不同的结果,注释代码得到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;
}

解决方案

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

解决方案二:

反转问题

解决方案三:

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

解决方案四:

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

时间: 2024-09-17 21:07:44

指针-字符创反转内容出错问题的相关文章

指针-为啥C++字符数组存字符串出错?

问题描述 为啥C++字符数组存字符串出错? 代码如下: char *tupiandizhi[3]; for(int u=0; u<3 ; u++) { char ch2[30]; sprintf(ch2,"%s%d%s","d:sift(",u,").jpg"); tupiandizhi[u]=ch2; printf("%sn",tupiandizhi[u]); } printf("%sn",tupi

c 指针-C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误

问题描述 C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误 typedef struct s{ char *name; }student; /*将结构体读出并显示*/ int IsUsed(char str) { FILE *fp = fopen("test","rb"); student s; s.name = (char) malloc(sizeof(char)*20); fread(&s,sizeof(student),1,fp); wh

shell-SHELL怎么实际现一个行内容 匹配两个字符之间的内容,一行有多个配置内容。

问题描述 SHELL怎么实际现一个行内容 匹配两个字符之间的内容,一行有多个配置内容. 举例说明:12aa34bb56aa78bb90匹配字符是aa bb 要取得aa bb之间的内容,34,78; 在这先谢谢大神们了. 解决方案 linux sed 替换两个字符之间的内容

电脑办公文件打不开 提示内容出错的解决办法

  办公一族可能经常会遇到这样一种情况,那就是:经常需要打开同事或客户邮件中的附件,我们将附件"另存为"到某一路径后,双击打开,竟然报错,说什么文件内容出错,接下来我就教大家一种简单的方法,解决这种情况,让你快速打开下载的文件.这里以ppt文件为例来讲解这个方法. 1.先来看一下,我所遇到的情况(估计大家也经常遇到),见下文 2.下载了一封邮件里的附件,如图 3.鼠标左键双击却出现如下提示框: 4.单击"修复"后,却出现下图中的错误,再点击"确定"

java更新mysql表内容出错

问题描述 java更新mysql表内容出错 sql语句: public static void deleteUser(String loginName){ String sql = "update user set flag=3 where loginName= "+ loginName ; DBUtil.getInstance().delete(sql); } 错误信息: java.sql.SQLException: Data truncation: Truncated incorr

c语言-结构体内指针字符数组的释放

问题描述 结构体内指针字符数组的释放 问题:结构体成员char* name和结构体struct student* studentIOS同时释放的话回报错,错误见代码中注释.请问这里要怎么释放呢?还是结构体里面不能这样使用指针字符数组? #include #include struct student{ int id; //长度:4 char* name; //8 int score[2]; //8 float avgScore; //4 }; void input(struct student*

编译出错-用push_back函数将数存入结构体指针向量中编译不出错,运行的时候出不来!

问题描述 用push_back函数将数存入结构体指针向量中编译不出错,运行的时候出不来! #include #include #include using namespace std; typedef struct person { string name; vector length; }person,*person_List; int main() { int number; person_List p; person p1; p = (person_List)malloc(sizeof(p

struts2.0-跪求各位大神帮助啊,Struts2文件下载GG,有中文字符的文件下载就出错,英文就不出错,求救

问题描述 跪求各位大神帮助啊,Struts2文件下载GG,有中文字符的文件下载就出错,英文就不出错,求救 本人小白,文件上传木有问题,下载英文字符文件名的文件也木有问题,就是中文字符名称的文件就GG了,跪求各位大神指点 解决方案 private static final long serialVersionUID = 1L; //文件路径 private String filePath; //文件名称 private String fileName; public String getFileP

.net2.0后台添加内容出错,网站正常访问

问题描述 "/"应用程序中的服务器错误.--------------------------------------------------------------------------------运行时错误说明:服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因).但可以通过在本地服务器计算机上运行的浏览器查看.详细信息:若要使他人能够在远程计算机上查看此特定错误消息的详细信息,请在位于当前Web应用程序根目录下的"w