C语言中删除字符的问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:03:51
#include <stdio.h>
void main()
{
extern void enter_string(char str[]);
extern void delete_string(char str[],char ch);
extern void print_string(char str[]);
char c;
char str[80];
enter_string(str);
scanf("%c",&c);
delete_string(str,c);
print_string(str);
}
#include <stdio.h>
void enter_string(char str[80])
{
gets(str);
}
#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';
}
#include <stdio.h>
void print_string(char str[])
{
printf("%s\n",str);
}
其中第3个定义删除的函数中:特别是str[j++]=str[i];怎么解释,请具体说明啊,这个我实在想不明白!最好这个第3个函数都解释下。

看看写成这样子能否理解呢!?
#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[]中第i个字符不是你要删除的字符ch执行下面的*/
{

/*注意上面已经有i++了,所以这里等于说str[j++]=str[i++]*/

str[j++]=str[i];
}
else
{
/*当找到你想要删除的字符时候,把该位置字符赋值'\0'*/
str[j]='\0';
}
}

明白了不!???