函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。

看不懂呀嘛看不懂,能不能一步一步解释一下voidfun(char*a){intj=0;char*p=a;while(*p=='*')p++;while(*p){a[j++... 看不懂呀嘛看不懂,能不能一步一步解释一下
void fun(char *a)
{
int j=0;
char *p = a ;
while(*p == '*') p++ ;
while(*p) {
a[j++] = *p ;
p++;
}
a[j]=0 ;
}
展开
 我来答
百度网友1cf58ab
2012-08-11 · TA获得超过343个赞
知道小有建树答主
回答量:276
采纳率:50%
帮助的人:368万
展开全部
void fun(char *a)
{
int j=0;
// p 指向字符指针 a
char *p = a ;
// 如果字符串的开始有一个或者连续的 * 号,跳过。
while(*p == '*') p++ ;
// 删除字符串开头的 * 号
while(*p) {
// 一个一个赋值
a[j++] = *p ;
p++;
}
// 结尾加上 \0
a[j]=0 ;
}
更多追问追答
追问
删除字符串开头的 * 号
哪一步,删除了??
追答
while(*p == '*') p++ ;执行这一句后,p 指向 * 后的字符,也就是 p 跳过了 * 号。然后
while(*p) {
// 一个一个赋值
a[j++] = *p ;
p++;
}
从 p 指针开始把字符逐个复制到 a 从 0开始的位置上,那么 p 指针之前的 * 号就不复制了,不就是删除了.
shaoqi08110820
2012-08-11 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1740万
展开全部
这个还不简单,
while(*p == '*') p++ ;
这句话就是查找前导*的最后一个,但是p指向的是最后*号的下一个字符
while(*p) {
a[j++] = *p ;
p++;
}
就是把下面字符全部复制到a数组中
a[j]=0就是设定数组的结束符
追问
while(*p == '*') p++ ; 
这句话就是查找前导*的最后一个,但是p指向的是最后*号的下一个字符
,,,,,,,,,,,,,,,这个他循环的时候,下面那些不进行?意思是知道(*p !== '*')时,开始下面的循环?
追答
晕,这是全导,就是说前面很多*号
如"*****abc“,指针p开始指向第一个*
while(*p == '*') p++ ; 之后p现在指向了a,懂吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式