
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]吗?
总之没有看懂这个函数 望讲解 谢谢~ 展开
这是一道例题,但是它定义的删除函数我看不懂,希望大家能帮我讲解一下,谢谢。
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]吗?
总之没有看懂这个函数 望讲解 谢谢~ 展开
3个回答
展开全部
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] 这样空格就没了
也就是说
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] 这样空格就没了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询