首页 > 其他分享 >删除字符串末尾的*(星号)

删除字符串末尾的*(星号)

时间:2024-09-15 09:55:47浏览次数:11  
标签:字符 删除 星号 int while 字符串 -- 末尾

要求

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除,
例如,字符串中的内容为:****A*BC*DEF*G******,删除后,字符串中的内容应当是:***A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。(不能使用strlen)

解题思路

本题的考核点是删除字符串中字符的算法。解题思路:对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号’\0’具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为最后在该字符后面加上结束符号’10’

代码

#include <stdio.h>
//#include <string.h>
void  fun( char *a )
{
	/*int i= 0; //方法一(题目要求不能使用C语言函数strlen,错误)
	int n = sizeof(a)-1;
	for(i = strlen(a)-1; i>=0 ;i--)
	{
		if(a[i]=='*')
		{
			a[i]=0;
		}
		else
		{
			break;
		}
	}
*/
	//char *p=a;//方法二
	//int i = 0;
	//while(*p)//计算数组的长度
	//{
	//	i++;
	//	p++;
	//}
	//for(i=i-1;i>=0;i--)//i-1是因为当前i指向的是\0
	//{
	//	if(a[i]=='*')
	//	{
	//		a[i]=0;
	//	}
	//	else
	//	{
	//		break;
	//	}
	//}

	int i=0;  //方法三
 	char *p,*q;
 	p=q=a;
 	//使p移动到最后一个字符 '\0' 
 	while(*p)
 	  p++;
 	//使p移动到最后一个有效字符 '*' 
 	p--;
 	//使p移动到最后一个不为字符 '*'
 	while(*p=='*')
 		p--;
 	//通过*q对a[i]赋值 
 	while(q<=p)
 	{
 		a[i]=*q;
 		i++;
 		q++;
	 }
	 a[i]='\0';
}

main()
{  char  s[81];void NONO ();
   printf("Enter a string:\n");gets(s);
   fun( s );
   printf("The string after deleted:\n");puts(s);
   NONO();
  getchar();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *in, *out ;
  int i ; char s[81] ;
  in = fopen("in.dat","r") ;
  out = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(in, "%s", s) ;
    fun(s) ;
    fprintf(out, "%s\n", s) ;    
  }
  fclose(in) ;
  fclose(out) ;
}

结果截图

标签:字符,删除,星号,int,while,字符串,--,末尾
From: https://blog.csdn.net/A_hard_August/article/details/142216434

相关文章

  • cJSON-轻量级解析模块、字符串的神——编织STM32C8T6与阿里云信息传递的纽带
            编写方向:本人就不泛泛的编写一篇什么一文学会cJSON了,没什么突出点,也就我水水字数,你们看来看去也不懂,本人是从上阿里云传信息接触的cJSON的,我就此写一篇针对性的文章,希望对大家有用,后期我在其他方面用到还会继续更新。一、简介        cJSON是一个用C......
  • 除了字符串前导的*号之外,将串中其它*号全部删除
    要求假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。例如,字符串中的内容为:-****A*BC*DEF*G******,删除后,字符串中的内容应是:****AB......
  • 字符串哈希&线段树维护字符串哈希
    本文哈希数组均为1-index,原始字符串均为0-index。哈希值类typedefunsignedlonglongull;ullbs=13131,bspw[MAXN];inlinevoidinit_bspw(){bspw[0]=1;for(inti=1;i<MAXN;i++)bspw[i]=bspw[i-1]*bs;}structHashNode{ullval;intlen;......
  • 字符串处理
    概念理解c风格字符串字符数组大小比字符串多一个chars[6]={'H','e','l','l','o','\0'};chars[]="Hello";用法1.存储方式及赋值'\0'占用存储空间,不计入长度作为变量使用时,不可s="hellow"s1=s2只可以逐个字符赋值sscanf(s,&......
  • 字符串处理工具类
    字符串处理工具类importjava.util.Arrays;publicclassStringUtils{/***将字符串反转*@paramstr要反转的字符串*@return反转后的字符串*/publicstaticStringreverseString(Stringstr){returnnewStringBuilder(str......
  • 【YashanDB知识库】yasql对字符串中分号的判定
    本文转载自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7352673.html?templateId=1718516问题现象这个问题发生在从pg向崖山进行数据迁移的过程中,通过pg\_dump将数据导出到文件后进行执行,第一条语句执行报错,在pg上执行是不会报错的,在崖山和oracle上执行均报错。与......
  • LeetCode 2390. 从字符串中移除星号(字符串、栈)
    题目:2390.从字符串中移除星号思路:使用栈就可以,这里string也可以实现栈的效果classSolution{public:stringremoveStars(strings){stringe="";for(autox:s){if(x=='*')e.pop_back();elsee.push_back(x);......
  • 2390. 从字符串中移除星号
    给你一个包含若干星号*的字符串s。在一步操作中,你可以:选中s中的一个星号。移除星号左侧最近的那个非星号字符,并移除该星号自身。返回移除所有星号之后的字符串。注意:生成的输入保证总是可以执行题面中描述的操作。可以证明结果字符串是唯一的。示例1:输入:s=......
  • 438. 找到字符串中所有字母异位词
    题目链接438.找到字符串中所有字母异位词思路滑动窗口题解链接官方题解关键点顺序比较;判断的状态量可以依此变更时应当使用“滑动窗口”的方式进行更新时间复杂度\(O(m+(n-m)\times\sum)\)空间复杂度\(O(\sum)\)代码实现:classSolution:de......
  • 【数据结构】字符串与JSON字符串、JSON字符串及相应数据结构(如对象与数组)之间的相互转
    前言:下面打印日志用的是FastJSON依赖库中的 @Log4j2。依赖:<!--AlibabaFastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version></dependency>目录普通字......