设为首页 加入收藏

TOP

C语言数组截取常见问题
2019-03-08 22:08:14 】 浏览:88
Tags:语言 截取 常见问题

这是一段数组截取的代码,函数功能是检查后面的'*'的数量,若多于指定输入数,则把多余的'*'删除

 1 void  fun( char *a,int  n )
 2 {
 3 
 4     char *p = a;
 5     
 6     while(*p)
 7         p++;
 8         
 9     /*
10     while(*p++);
11     */
12     
13     char *p1 = p;
14     int num = 0;
15     while(*(--p1) == '*')
16         num++;
17 
18     if(num>n){
19         *(p-num+n) = '\0';
20     }
21 }

注释部分是我一开始写的,试了好几次都不行,调试的时候发现第15行 --p1 是没有值的。原因在第10行 *p++,相当于把p(数组首地址)移动到最后,前面的元素全被删除。而p1=p,所以前面没有值。第6、7行相当于p[i],i++,p1=&p[i]。所以可行。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇安全阀工作原理(图) 下一篇用clock()函数计时的坑

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目