博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

#include <stdio.h>
#include <conio.h>

void fun(char *a, char *h, char *p)
{
 char b[81];
 char *c = a;
 int i = 0;
 while (*c){
  if (c <= h){
   b[i] = *c;
   i++;
   }
  else if (h < c && c <= p){
      if (*c != '*'){
      b[i] = *c;
      i++;
      }
      }
   else{
     b[i] = *c;
     i++;
     }                                      
   c++;
  }
 for (int j = 0; j < i; j++){
  *a = b[j];
  a++;
 }
 *a = '\0';   //puts()遇到空字符停止,空字符不是空白字符,空白字符是指:空格、制表符 \t 等不显示的字符,而空字符‘\0’往往作为字符串的停止字符
}

/* fun()函数如果不加最后的 : *a = '\0'; 将会输出“*****FGHhhhHHW***HHW***",总长度不变;加上这句之后,输出”*****FGHhhhHHW***",相当于把字母中间的'*'删除了,达到目的;

int main()

{

char s[81], *t, *f;
 printf("Enter a string:\n");

gets(s);    //输入一个字符串,形如"*****FG*H*hhh****HHW***"
 t = f = s;
 while (*t) t++;
 t--;
 while (*t == '*') t--;        //使 t 指向最后输入字符串的最后一个字母‘W'
 while (*f == '*') f++;     //使 f 指向输入字符串的第一个字母’F'
 fun(s, f, t);                    //调用函数除去字母间的‘*’,使字符串变为”*****FGHhhhHHW***"
 printf("The string after deleted:\n");

puts(s);                         //输出字符串,puts()遇到空字符‘\0'停止输出;
 return 0;
}