使字符串尾部的*号不多于n个,若多余则删除,为什么这样写,每个步骤是什么意思

[复制链接]
查看11 | 回复1 | 2011-2-24 16:17:32 | 显示全部楼层 |阅读模式
#include
#include
#include
voidfun(char *a , intn)
{int i=0,k=0;
char *p,*t;
p=t=a;while(*t)t++;t--;
while(*t=='*')
{k++;t--;}
t++;
if(k>n)
{while(*p&&p<t+n)
{a=*p;i++;p++;}
a='\0';}
}

回复

使用道具 举报

千问 | 2011-2-24 16:17:32 | 显示全部楼层
p=t=a;使得p和t都指向a数组的首字符while(*t)t++;这步完成后*t为0,也就是说这时t指向了a数组的结尾符t--是为了让t指向数组的最后一个字符(就是结尾符的上一个)。while(*t=='*'){k++;t--;}如果最后一个字符时*的话,就让k增加1,并且t往前移一个字符。循环结束后k就是有多少个*,t指向了最后一个非*的字符。最后这个if语句应该看得懂的吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行