用C语言编写一完整源程序,从键盘输入一个字符串Str1,在新的一行输入一个待检测字符Char_Check,在Str1中检测字符Char_Check,删除检测到的字符,并在新的一行显示处理后的字符串Str1。
#include "stdio.h"
#include "string.h"
void deleteChar(char *a,char c)//从特定字符串中删除特定字符{
int i; char *d=NULL;
if((d=strchr(a,c))!=NULL)//找到这个字符,从后一位向前移位,将其覆盖,达到删除的目的
{
for(i=0;*(d+i)!=0;i++)
*(d+i)=*(d+i+1);
}
}
int main()
{
char Str1[100]={0};
char Char_Check;
int i;
gets(Str1);
scanf("%c",&Char_Check);
for(i=0;i<strlen(Str1);i++)//一次只能删除一个特定字符,循环删除,最多循环字符串最大长度
deleteChar(Str1,Char_Check);
puts(Str1);
}
运行结果:
int main(){
char str[1000],c;//定义字符串str和字符c
int i=0,j;//定义循环变量
printf("请输入字符串Str1:");
gets(str);//输入字符串str
printf("请输入字符Char_Check:");
scanf("%c",&c);//输入字符c
for(i=0;str[i]!='\0';i++)
if(str[i]==c)//判断字符串str中的字符是否与c相同
for(j=i;str[j]!='\0';j++)
str[j]=str[j+1];//如果相同,字符依次向前移动覆盖(相当于删除)
printf("删除后的字符串为:");
puts(str);
}
运行结果如图:
void del_str( char *str , char ch)
{
char *tmp,*p;
tmp=p=str ;
while( *tmp )
{
if ( *tmp != ch )
*p++=*tmp ;
tmp++ ;
}
*p=0x00;
}
int main()
{
char Str1[128],Char_Check;
gets( Str1 );
Char_Check=getchar();
del_str(Str1,Char_Check) ;
printf("%s\n" , Str1 );
return 0;
}本回答被提问者和网友采纳
#include <stdio.h>
#include <string.h>
#include <assert.h>
int RemoveChar(char *pstr, char ch)
{
int len = strlen(pstr);
assert(pstr != NULL);
while (len-- > 0) {
if (*pstr == ch){
strncpy(pstr, pstr+1, len);
continue;
}
pstr++;
}
*pstr = '\0';
return 1;
}
#define MAXLEN 128
int main(void)
{
char pstr[MAXLEN] = {0};
char ch;
printf("Please enter the string: ");
gets(pstr);
printf("\nPlease enter the char: ");
scanf("%c", &ch);
RemoveChar(pstr, ch);
printf("\nAfter: %s\n", pstr);
return 0;
}