指引网

当前位置: 主页 > 编程开发 > C >

C字符串中删除指定字符几种算法

来源:网络 作者:佚名 点击: 时间:2017-07-19 23:07
[摘要]  下面来给大家整理了几个常用的也是算法非常精的删除字符串中指定字符的例子,有兴趣学习的同学可进入参考。

题如下图所示

 

C字符串中删除指定字符几种算法


题目意思很明显了,我们的思路其实也挺简单的,换句话说,删掉一个然后重构数组,补上那个空,一个个字符推进一格就行了嘛,不用想得太复杂(简单的来说就是偷懒)。

 代码如下 复制代码

#include<stdio.h>
#include<string.h>
void delchar(char s[], char c);
int main(void)
{
 char c;
 char s[80];
 printf("Input a string: ");
 gets(s);
 printf("Input a char: ");
 scanf("%c", &c);
 delchar(s, c);
 printf("After deleted,the string is:%s", s);
 return 0;
}
void delchar(char s[], char c)
{
 int a, b, e;
 e = strlen(s);
 for(a=0; a < e; a++) {
 if(s[a] == c) {
 for(b = a; b < e; b++)
 s[b] = s[b + 1];
 a = a - 1;
 }
 }
}

算法二

 代码如下 复制代码

#include <stdio.h>
char fun(char str[20],char ch)
{   int i,j;
    for(i=0;str[i]!='\0';i++)
      if(str[i]==ch) {for(j=i;str[j]!='\0';j++) str[j]=str[j+1]; }
}
void main()
{  char str[20],ch;
   printf("enter a string :");
   gets(str);
   printf("enter you want delete letter : ");
   ch=getchar();
   fun(str,ch);
   printf("%s",str);

}

算法三

比如删除指定的字符在字符串中第一个出现的位置

 代码如下 复制代码
void strdel( char* str, char ch )
{
    char *p = str;
    while( *p )
    {
        if( *p==ch )
            break;
    }
    if( *p )
    {
        while( *p )
        {
            *p==*(p+1);
            p++;
        }
    }
}

程序是同学问我了之后我改的,所以不必太在意和我的风格不符=。=

------分隔线----------------------------