鱼C论坛

 找回密码
 立即注册
查看: 1890|回复: 5

指针,字符删除

[复制链接]
发表于 2015-11-16 12:55:26 | 显示全部楼层 |阅读模式
10鱼币
输入一行字符串。在输入个字符,删除字符串中相同的字符。
  1. # include <stdio.h>
  2. # include <string.h>
  3. main()
  4. {
  5.         char a[100],b;
  6.         char* j;
  7.         gets(a);
  8.         b=getchar();
  9.         j=a;
  10.         for(;*j != '\0';j++)
  11.         {
  12.                 if(*j==b)

  13.                         *j=*(j+1);
  14.     }
  15.        
  16.         printf("%s",a);
  17.        
  18. }
复制代码


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

dsa%%%afd
%
我的答案是dsa%%afd,并没有完全把%删除完
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-16 12:55:27 | 显示全部楼层
本帖最后由 ryxcaixia 于 2015-11-16 13:41 编辑
  1. char* rm_spec_ch(const char* str, const char ch)
  2. {
  3.         // res is the result char buf
  4.         char* res = (char*)malloc(sizeof(char) * strlen(str));
  5.         memset(res, 0, sizeof(char) * strlen(str)); // empty the buf

  6.         for (int i = 0; *str && str; str++)
  7.                 if (*str != ch)
  8.                         res[i++] = *str;

  9.         return res;
  10. }

  11. int main()
  12. {
  13.         printf("enter the str\n");
  14.         char buf[0xFF] = {0};
  15.         gets(buf);

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

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

  20.         // release the memory on heap
  21.         free(res);
  22.         res = NULL;

  23.         return 0;
  24. }
复制代码



1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-16 19:36:37 | 显示全部楼层
  1. # include <stdio.h>
  2. # include <string.h>
  3. int main()
  4. {
  5.         char a[100],b;
  6.         char* j;
  7.         gets(a);
  8.         b=getchar();
  9.         j=a;
  10.         
  11.         char str[100];  //加个数组输出
  12.         int i=0;//让新加入的数组的下标自增
  13.         for(;*j != '\0';j++)
  14.         {
  15.            if(*j!=b)
  16.                   {
  17.               str[i]=*j;   //原数组转到新数组
  18.                           i++;                         //新数组自增
  19.            }   
  20.         }
  21.         str[i]='\0';        //手动加个结束符
  22.         printf("%s",str);//输出
  23.         return 0;
  24. }
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
独一无② + 5 + 5 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-16 19:38:43 | 显示全部楼层
运行结果如图

运行结果

运行结果
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-16 20:53:31 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-12 11:45:20 | 显示全部楼层
学习了,谢谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 16:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表