tmtyht520 2015-04-11 09:57 采纳率: 0%
浏览 1731

为什么字符串结尾有两个空格??

 #if 1
#include<stdlib.h>
#include<iostream>
using namespace std;
char* Reverse(char* s)
{
    //将q指向字符串最后一个字符
    char* q = s ;
    int j=0;
    while( *q++ ) 
    {
        j++;
    }
    cout<<j<<endl;
    q-=2;//为何要减去2?

    //分配空间,存储逆序后的字符串。
    char* p = new char[sizeof(char) * (q - s + 2)] ; 
    char* r = p ;

    // 逆序存储
    while(q >= s)
        *p++ = *q-- ;
    *p = '\0' ;

    return r ;
} 
int main()
{char *m="1234567";
    char *n=Reverse(m);
    cout<<n<<endl;
    system("pause");
    return 0;

代码运行无问题,功能已实现了逆序。但是调试的时候发现while中居然有两次空格,请求帮忙解答。

  • 写回答

3条回答

  • 王维来 2015-04-11 10:37
    关注

    没看懂你要问啥?至于指针q为何减2,是因为while(*q++)循环后,q指针后移了一位,并且要去掉 '\0’的位置故q还得减1,即q-2。

    评论

报告相同问题?

悬赏问题

  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错