| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 335 人关注过本帖, 1 人收藏
标题:帮忙分析一下流程
只看楼主 加入收藏
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
结帖率:100%
收藏(1)
 问题点数:0 回复次数:5 
帮忙分析一下流程
有一个函数.书上说是删除字符串中字符,但我没看懂该函数是如何运行的,帮忙解释一下流程。
#include<stdio.h>
void delete_string(char str[ ],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
高手解释一下流程如何一步一步运行的,谢谢
搜索更多相关主题的帖子: 函数 
2008-08-29 06:58
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
收藏
得分:0 
下面为什么是j++阿?,if语句中i没有++,str[i]赋给str[j++]是什么意思阿
2008-08-29 07:02
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
又是指针。
拿个例子来看看。
假设str[]="123456";
ch='3';
在'3'之前,if语句都没用。源程序就是
for(i=j=0;str[i]!='\0';i++)
str[j++]=str[i];(注意后面的语句不是循环里的)
这很清楚,一个自己向自己复制的语句。(i,j始终相等)
当遇到'3'时,i=2,j=2;由于if的存在,str[j++]=str[i];不再执行。
此时j=2;i=3;从此j=i-1,相当于复制3的时候刚好跳过,所以说能删除指定字符。
就好比你有一付平铺的扑克,A,2,3,4,5,6,7,8,9。。。左手代表i,右手代表j,左手总是按顺序拿起一张,给右手,检测符合条件的,右手放回去,不符合条件的右手就不动。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-08-29 08:42
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
收藏
得分:0 
这个是指针啊?
我才看到函数和宏定义,指针还没有看呢!
但是谭浩强的书上函数一章就是这个例子!
我说看来看去看不懂呢!
谢谢楼上的!!
2008-08-29 08:56
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
收藏
得分:0 
懂了,3Q~~~~
2008-08-29 08:58
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
也不能算指针吧,反正这玩意挺烦的。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-08-29 09:14
快速回复:帮忙分析一下流程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028699 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved