注册 登录
编程论坛 C++教室

如果是连续的几个字符怎么删除,变量C在判断条件里怎么表达

BBOY愿愿 发布于 2015-12-09 20:12, 2074 次点击
/*①由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符。*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    int i,l,n,t;
    char a[100];
    char c;
    printf("输入一个字符:\n");
    scanf("%c",&c);
    printf("输入一串字符:\n");
    scanf("%s",&a);
    l=strlen(a);
    for(i=0;i<l;i++)
    {
      if(a[i]=='c')
       {
        a[i]=' ';
        n=i;
        for(t=n;t<l;t++)
         {
          a[t]=a[t+1];
         }
         
       }
      
    }
    printf("%s",a);
    getch();
    return 0;
}
谢谢..............................................
4 回复
#2
rjsp2015-12-10 09:00
如果你用的是符合C标准的编译器
程序代码:
#include <stdio.h>

int main( void )
{
    char a, b[100];
    if( scanf("%c",&a)!=1 || scanf("%99s",b)!=1 )
        return 1;

    for( char *p1=b,*p2=b; *p2!=a?*p1++=*p2++:*p2++; );

    printf( "%s\n", b );
    return 0;
}

如果你用的是破烂编译器
程序代码:
#include <stdio.h>

int main( void )
{
    char a, b[100];
    scanf( "%c", &a );
    scanf( "%99s", b );

    {
        char *p1=b, *p2=b;
        do
        {
            if( *p2 != a )
                *p1++ = *p2;
        }
        while( *p2++ );
    }

    printf( "%s\n", b );
    return 0;
}

#3
Lucky012015-12-13 02:13
我帮你修改了一下你编程中出现的错误,自己看一下错在哪里
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    int i,l,n,t;
    char a[100];
    char c;
    printf("输入一个字符:\n");
    scanf("%c",&c);
    printf("输入一串字符:\n");
    scanf("%s",a);//字符串的输入无需&符号,而字符的输入需要&符号
    l=strlen(a);
    for(i=0;i<l;i++)
    {
      if(a[i]==c)//a[i]是与字符变量c比较,是否相等
       {
        //a[i]=' ';这是多余的无需把a[i]赋空格,它仍可以删除
        n=i;
        for(t=n;t<l-1;t++)//如果t<l的话,后面执行t+1时会越界
         {
          a[t]=a[t+1];
         }
         l=l-1;//每删除一个相同的字符就需要把字符串a的长度减1
       }
      
    }
    a[l]='\0';
    printf("%s",a);
    getch();
    return 0;
}
#4
BBOY愿愿2015-12-27 11:12
回复 2楼 rjsp
灰常感谢!
但是我是个初学者
那个是不是用的指针类型
#5
BBOY愿愿2015-12-27 11:13
回复 3楼 Lucky01
谢谢!
懂了
很清楚
谢谢!
1