45(删除多于n个的前导*号并输出)

45 date:2021.3.17
在这里插入图片描述要点:

详细代码如下:

#include  <stdio.h>
#include  <string.h>
#define   N   5
#define   M   10
/**********found**********/
void fun(char  (*ss)[M], int  k)  
{ int  i=0  ;
/**********found**********/
  while(i< N) {  //遍历N个字符串
/**********found**********/
    ss[i][k]='\0';  i++;  } //用 '\0'来锁定,即加入字符串结束标识'\0',就完成了终止
}
void main()
{ char  x[N][M]={"Create","Modify","Sort","skip","Delete"};
  int  i;
  printf("\nThe original string\n\n");
  for(i=0;i<N;i++)puts(x[i]);  printf("\n");
  fun(x,4);
  printf("\nThe string after deleted :\n\n");
  for(i=0; i<N; i++)  puts(x[i]);  printf("\n");
}


在这里插入图片描述
要点:

详细代码如下:

#include <stdio.h>
void  fun( char *a, int  n )
{
  /*
	analyse:

	目标:使字符串的前导*不多余n个,若多于n个,则删除多于的*号
	 
    遍历求字符串前导星号个数,从多于处开始重接
 */


	int i = 0;
	int k = 0;
	char *p , *t;

	p = t =a;  // p与 t同时指向数组的首地址
	while(*t == '*')
	{
		k++;
		t++;
	}
	if(k > n)
	{
		while(*p)
		{
			a[i] = *(p+k-n);
			i++;
			p++;
		}
		a[i] = '\0';
	}

	/* ERROR:
	int i,j = 0;

	for(i = 0; a[i] == '*'; i++);
	
		
	if(i >  n)
		for(j= i-n;  a[j] != '\0'; j++)
			a[i] = a[j];
		a[i] = '\0';
	*/


}

void main()
{  char  s[81];  int  n;void NONO ();
   printf("Enter a string:\n");gets(s);
   printf("Enter n :  ");scanf("%d",&n);
   fun( s,n );
   printf("The string after deleted:\n");puts(s);
   NONO();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值