2025年4月28日 星期一 乙巳(蛇)年 正月廿九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言删除星号

时间:12-29来源:作者:点击数:98

问题描述

现在有一串字符需要输入,规定输入的字符串中只包含字母和*号。请编写程序,实现以下功能:除了字符串前后的*号之外,将串中其他的*号全部删除。

例如,假设输入的字符串为****A*BC*DEF*G********,删除串中的*号后,字符串变为****ABDEFG********

问题描述

该问题需要对字符串进行操作,而在C语言中没有专门的字符串变量,因此如果需要将一个字符串存放在变量中,则必须使用字符数组,即使用一个字符型数组来存放一个字符串,数组中的每一个元素存放一个字符。

算法分析

设置两个指向字符的指针变量t和f。先使用循环语句让t指针指向字符串中最后一个字符,而f指针指向字符串中第一个字符;再判断t和f指向的字符是否为“*”,如果为“*”,则t指针自减,f指针自增,直到遇到第一个不是的字符为止。

再定义一个函数fun()用于删除字符串中的“*”号,同时保留字符串前后的“*”号。

下面是完整的代码:

  • #include <stdio.h>
  • int fun(char *a, char *h, char *p)
  • {
  • int i, j;
  • /*删除指针h与p之间的所有“*”*/
  • for(i=0,j=0; &h[i]<p; i++)
  • if(h[i]!='*')
  • h[j++]=h[i];
  • /*将指针p至字符串尾部的所有字符前移*/
  • for(i=0; p[i]; i++,j++)
  • h[j]=p[i];
  • h[j]='\0'; /*在字符串尾部添加结束标志*/
  • return 0;
  • }
  • int main( )
  • {
  • char s[81], *t, *f;
  • printf("Enter a string :\n");
  • gets(s); /*输入字符串*/
  • t=f=s; /*用字符指针t、f指向串s*/
  • while(*t)
  • t++;
  • t--; /*将指针t定位到字符串中最后一个字符*/
  • while(*t == '*') /*指针t指向字符串中最后一个字符*/
  • t--;
  • while (*f == '*') /*指针f指向字符串中第一个字符*/
  • f++;
  • fun(s, f, t);
  • printf("The string after deleted:\n"); /*输出结果*/
  • puts(s);
  • return 0;
  • }

运行结果:
Enter a string :
****A*BC*DEF*G********
The string after deleted:
****ABCDEFG********

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门