这道题给我的感觉就是,指针跳过来跳过去,眼花缭乱
大家也来看看
代码如下
#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 ); }
运行结果
这里,如果把
while ( *p2 != '\0' ) { p2++; }注释掉
则输出结果如下
感觉比较怪异
原文地址:http://blog.csdn.net/u011694809/article/details/45824155