一道题检测是否理解指针

     这道题给我的感觉就是,指针跳过来跳过去,眼花缭乱

     

     大家也来看看

 

代码如下

#include <iostream>

using namespace std;

int FindSubString( char* pch )
{
	int   count  = 0;
	char  * p1   = pch;
	while ( *p1 != '\0' )
	{
		if ( *p1 == p1[1] - 1 )
		{
			p1++;
			count++;
		}
		else
		{
			break;
		}
	}
	int count2 = count;
	while ( *p1 != '\0' )
	{
		if ( *p1 == p1[1] + 1 )
		{
			p1++;
			count2--;
		}
		else
		{
			break;
		}
	}
	if ( count2 == 0 )
		return(count);
	return(0);
}
void ModifyString( char* pText )
{
	char  * p1   = pText;
	char  * p2   = p1;
	while ( *p1 != '\0' )
	{
		int count = FindSubString( p1 );
		if ( count > 0 )
		{
			*p2++ = *p1;
			sprintf( p2, "%i", count );
			while ( *p2 != '\0' )
			{
				p2++;
			}
			
			p1 += count + count + 1;
		}
		else
		{
			*p2++ = *p1++;
		}
	}
}
void main( void )
{
	char text[32] = "XYBCDCBABABA";
	ModifyString( text );
	printf( text );
}


运行结果




以前没用过sprintf函数,虽然baidu了一下,还是不太懂

这里,如果把

while ( *p2 != '\0' )
{
	p2++;
}

注释掉


则输出结果如下




感觉比较怪异

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值