C字符串中删除输入的字母

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:30:47
main()
{
void delete_string(char str[],char ch);
char c;
static char str[80];
gets(str);
scanf("%c",&c);
delete_string(str);
printf("%s",str);
}
void delete_string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[i++]=str[i];
str[j]='\0';
}
帮忙看下程序正确吗?
要是正确的话,麻烦详细解释下 被调函数 if(str[i]!=ch
str[i++]=str[i];/*这里不明白*/
str[j]='\0';

显然不对。这样:
void delete_string(char str[],char ch)
{
char sTmp= new char[strlen(str)+1];
int n=0;
for(int i=0;i<strlen(str);i++)
{
if(str[i]!=ch) sTmp[n++]=str[i];
}
sTmp[n]=0;
strcpy(str,sTmp);
delete []sTmp;
}

#include<stdio.h>
#include<string.h>

void main()
{
void delete_string(char str[],char ch);
char c;
static char str[80];
gets(str);
printf("%s\n",str);
scanf("%c",&c);
delete_string(str,c); //c丢掉了
printf("%s\n",str);
}
void delete_string(char str[],char ch)
{
int i,j,k;
//for(i=j=0;str[i]!='\0';i++,j++) //'\0'代表空格,字符串中可能有空格,所以不能用str[i]!='\0'
k=strlen(str);
for(i=j=0;i<k;i++)
if(str[i]==ch) //等于就删除,用下一个字符替代本字符,相当于删除了本字符,后面的字符要向前移一位
{
for(j=i;j<k-1;j++)
str[j]=str[j+1];