从字符串删除指定字符设计方法:
输入字符串和待删除字符
定义一个原字符串下标i和一个新字符串下标j
用i下标循环遍历字符串
如果当前字符与待删除字符不同,则存储到新数组下标位置中,新下标+1
循环结束,在新下标最大值位置,赋值字符串结束符
输出新字符串
参考代码:
#include
int main()
{
char str[100],ch;
int i,j;
gets(str);
ch=getchar();
for( i=0,j=0;str[i];i++ )
if ( str[i]!=ch )
str[j++]=str[i];
str[j]='\0';
puts(str);
return 0;
}
运行结果:
sdf$$$sdf$$
$
sdfsdf
这个 str[j]='\0';是if中出现str[i]=c的时候(注意这个时候j=i)把str[j](也就是str[i],即c)置换成空字符,以此来实现删除c
'\0'是结束记号,你不加的话字符串的长度就没有缩短
比如字符串 abc,要删除b,你不加'\0'的话,就会输出acc,
内存布局:acc'\0'
因为最后一个c后边本来有一个'\0',删除后,必须在新的字符串末尾加'\0',即第3个字符c的地方,这样就输出ac了,
布局:ac'\0''\0'
'\0'是字符串的结尾字符,如果你不加的话,输出就成了
sdfsdfsdf$$
增加了
str[j]='\0';
这句后,实际上内存中的字符串str的内容是
sdfsdfsdf$$'\0'
字符串结束!后面的字符就不在显示啦!