#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';
}
当运行到str[j]='\0'; 程序应该终止了吧
追答是的,str[j]='\0'不在for循环体内,执行完这语句,就退出函数了。
追问我明白了,整个原理就是用上个字符替代原有字符,而不是真正的删除它,可以真正删除一个字符吗,难道原理也是用空格代替
追答数组被定义下来以后,其内存空间是不能被“删除”的,所谓删除字符串中的一个字符,只不过是让字符串以另一种形式显示出来。如果删除某个字符以空格代替,那该字符原来的地方就变成一个空格,如果是删除后连位置都没有了,那就是你这个函数的做法,把后面的字符往前移,覆盖被删除字符的位置。