C语言中关于删除指定字符的问题

题目是要求删除ThisisaCprogram中的空格字符这是一道例题,但是它定义的删除函数我看不懂,希望大家能帮我讲解一下,谢谢。file3.c(文件3)voiddele... 题目是要求删除This is a C program中的空格字符
这是一道例题,但是它定义的删除函数我看不懂,希望大家能帮我讲解一下,谢谢。
file3.c(文件3)
void delete_string(char str[],char ch) //定义外部函数 delete_string
{int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}

拿第一个字母T做例子,一直运行到str[j++]=str[i] 这不成了str[1]=str[0]了吗?不应该是str[0]=str[0]吗?
总之没有看懂这个函数 望讲解 谢谢~
展开
 我来答
松甜恬0Je4ba
推荐于2016-09-02 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3474万
展开全部
j++是先使用j的值,然后j的值+1

也就是说
str[j++]=str[i]; 相当于 str[j]=str[i];j++;两句的综合

所以 T来说 str[0]=str[0]=T 然后是 str[1]=str[1]=h 一直到遇到空格,遇到空格时 str[j++] = str[i]
不再执行,也就是 j++不再执行,但i++继续,所以当到is的i时,是 str[4] = str[5] 这样空格就没了
百度网友9bc0c2543
2014-05-04
知道答主
回答量:14
采纳率:0%
帮助的人:13.8万
展开全部
不会 , j永远小于等于i, j增长的操作在if语句里面,只有条件成立才会增长,而i一直在增长。
追问
谢谢 我已经明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-05-04
展开全部
j++是先用j的值运算,之后加1。
str[j++]=str[i];如果这一句之前j=0的话,那么这句话之后i=0,j=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式