独一无② 发表于 2015-11-16 12:55:26

指针,字符删除

输入一行字符串。在输入个字符,删除字符串中相同的字符。
# include <stdio.h>
# include <string.h>
main()
{
        char a,b;
        char* j;
        gets(a);
        b=getchar();
        j=a;
        for(;*j != '\0';j++)
        {
                if(*j==b)

                        *j=*(j+1);
    }
       
        printf("%s",a);
       
}

问题,我发现当需要删除的字符,连在一起的时候,就只能删除一个。应该是循环的那部分错了,但是我不知道该如何改。

dsa%%%afd
%
我的答案是dsa%%afd,并没有完全把%删除完

ryxcaixia 发表于 2015-11-16 12:55:27

本帖最后由 ryxcaixia 于 2015-11-16 13:41 编辑

char* rm_spec_ch(const char* str, const char ch)
{
        // res is the result char buf
        char* res = (char*)malloc(sizeof(char) * strlen(str));
        memset(res, 0, sizeof(char) * strlen(str)); // empty the buf

        for (int i = 0; *str && str; str++)
                if (*str != ch)
                        res = *str;

        return res;
}

int main()
{
        printf("enter the str\n");
        char buf = {0};
        gets(buf);

        printf("enter the char that you want to remove\n");
        char rm_ch = getchar();

        char* res = rm_spec_ch(buf, rm_ch);
        printf("the res:%s\n", res);       

        // release the memory on heap
        free(res);
        res = NULL;

        return 0;
}



想不出来 发表于 2015-11-16 19:36:37

# include <stdio.h>
# include <string.h>
int main()
{
      char a,b;
      char* j;
      gets(a);
      b=getchar();
      j=a;
      
      char str;//加个数组输出
      int i=0;//让新加入的数组的下标自增
      for(;*j != '\0';j++)
      {
         if(*j!=b)
                  {
            str=*j;   //原数组转到新数组
                          i++;                         //新数组自增
         }   
      }
      str='\0';        //手动加个结束符
      printf("%s",str);//输出
      return 0;
}

想不出来 发表于 2015-11-16 19:38:43

运行结果如图

独一无② 发表于 2015-11-16 20:53:31

ryxcaixia 发表于 2015-11-16 13:39


谢谢,大爱!

heblhc 发表于 2015-12-12 11:45:20

学习了,谢谢分享
页: [1]
查看完整版本: 指针,字符删除