首页 > 技术文章 > 一道题检測是否理解指针

jzssuanfa 2017-06-23 09:19 原文

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

     

     大家也来看看

 

代码例如以下

#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++;
}

凝视掉


则输出结果例如以下




感觉比較怪异

推荐阅读