第1个回答 2011-01-07
#include <iostream>
using namespace std;
char *del(char a[],int &n,char x)
{
int i;
char *c=new char[100];
int k=0;
for(i=0;i<n;i++)
{
if(a[i]==x)
continue;
else
c[k++]=a[i];
}
c[k]='\0';
return c;
}
int main()
{
char a[100];
char c;
cout<<"请输入一个字符串:";
gets(a);
cout<<"请输入一个要删除的字符:";
cin>>c;
int len=strlen(a);
cout<<"删除该字符后的字符串为:";
cout<<del(a,len,c)<<endl;
return 0;
}
这个是用C++写的,方法比较笨,但是通俗易懂,希望能够帮助到您。。稍微改动一下,就能用C语言实现了。。
第2个回答 2011-01-07
思路:用一个新的字符数组来存最后输出的数组。循环比较原数组的所有字符,如果不是要删除的字符就存入该字符数组
int main(int argc, char* argv[])
{
char src[]="12a34a567aa";
char des[50];
char name='a';
int flag=0;//标志变量,用来指向des数组的某个位置
int i;
for(i=0;i<StrLen(src);i++)
{
if(src[i]!=name)
{
des[flag]=src[i];
flag++;
}
}
des[i]='\n';
printf("字符串是%s\n",des);
system("pause");
return 0;
}
第3个回答 2011-01-07
希望对你有所帮助:
#include <stdio.h>
#include <string.h>
#define N 10
void main()
{
char ch[N]={'0'};
char move;//指定要删除的字符
printf("please input a string:");
gets(ch);
printf("your string is:");
puts(ch);
printf("please input the char which you want to move:");
scanf("%c",&move);
for(int i=0;i<N;i++)
{
if(move==ch[i])
{
for(int j=i;j<N;j++)
{
ch[j]=ch[j+1];//将相同的字符覆盖
}
i=-1;//让i再从0开始循环检测
}
}
puts(ch);//输出删除指定字符后的字符串
}
第4个回答 2011-01-08
char* DelStr(char* str1, char* str2)
{
int i,j;
int iLen1,iLen2;
int iFlag,iPos;
char s1[128+1],s2[128+1];
memset(s1,0x00,sizeof(s1));
memset(s2,0x00,sizeof(s2));
strcpy(s1,str1);
strcpy(s2,str2);
iLen1 = strlen(s1);
iLen2 = strlen(s2);
for(i = 0;i<=iLen1 - iLen2;i++)
{
iFlag = 0;
iPos = i;
for(j = 0; j< iLen2; j++,iPos++)
{
if(s1[iPos] != s2[j])
{
iFlag = 1;
break;
}
}
if(iFlag == 0)
{
memmove(s1+i,str1+i+iLen2,iLen1-iLen2);
s1[iLen1-iLen2] = 0;
iLen1 = strlen(s1);
}
}
return(s1);
}