C语言实验题——删除指定字符

2025-03-10 00:47:31
推荐回答(5个)
回答1:

从字符串删除指定字符设计方法:

  • 输入字符串和待删除字符

  • 定义一个原字符串下标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

回答2:

这个 str[j]='\0';是if中出现str[i]=c的时候(注意这个时候j=i)把str[j](也就是str[i],即c)置换成空字符,以此来实现删除c

回答3:

'\0'是结束记号,你不加的话字符串的长度就没有缩短
比如字符串 abc,要删除b,你不加'\0'的话,就会输出acc,
内存布局:acc'\0'
因为最后一个c后边本来有一个'\0',删除后,必须在新的字符串末尾加'\0',即第3个字符c的地方,这样就输出ac了,
布局:ac'\0''\0'

回答4:

'\0'是字符串的结尾字符,如果你不加的话,输出就成了
sdfsdfsdf$$
增加了
str[j]='\0';

这句后,实际上内存中的字符串str的内容是
sdfsdfsdf$$'\0'

回答5:

字符串结束!后面的字符就不在显示啦!