#include
#include
void delchar(char *s,char c);
int main()
{
char s[100],c,*p=s;
printf("输入一个字符串(小于100个字符):");
scanf("%s",s);
getchar();
printf("输入要删除的字符:");
scanf("%c",&c);
delchar(p,c);
printf("%s",s);
return 0;
}
void delchar(char *s,char c)
{
int i,j=0,len=strlen(s);
char sSave[len];
for(i=0;i{
if(s[i]!=c)
{
sSave[j++]=s[i];
}
}
sSave[j]=0;
memset(s,0,len);
for(i=0;is[i]=sSave[i];
}
#include
#define N 80
int main(void)
{
char c;
char str[N];
void delchar(char *str, char c);
gets(str);//
scanf("%c", &c);
getchar();
delchar(str, c); //
puts(str);
return 0;
}
void delchar(char *str, char c)
{
int i, j;
i = j = 0;
while(str[i] != '\0'){
if(str[i] != c){//
str[j] = str[i];
j++;
}
i++;
}
str[j] = '\0'; //
}
看带//的行。 是修改过的。
gets(str[N]);
这里出错
gets(str);
现在都没怎么见过这种写法了,反正我这边编译通不过提示
test.C:(.text+0x79): warning: the `gets' function is dangerous and should not be used.
子函数写的莫名其妙,能达到目的才怪。现在实现的效果是,如果str里有n个c代表的字符,那么会把str设置为n个c代表的字符,str(n)='0',而且可能越界,当str全是c代表的字符时。没有找到的话,就直接把原来字符串第一个字符置'0‘。
编译倒没有编译问题。