假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。 在编写函数时,不得使用C语言提供的字符串函数。

img

#include <string.h>
#include <stdio.h>
void  fun  (char *a)
{
/************Begin*************/

/************End**************/
}
int main()
{
  char s[81];
  FILE *in,*out;
  int i;
  printf("Enter a string :\n")https://img-mid.csdnimg.cn/release/static/image/mid/ask/053730852256199.png "#left")
;
  gets(s);
  fun(s);
  printf("The string after deleted:\n");
  puts(s);
  /******************************/
  in=fopen("in21.dat","r");
  out=fopen("out21.dat","w");
  for(i=0;i<8;i++)
  {
      fscanf(in,"%s",s);
      fun(s);
      fprintf(out,"%s\n",s);
  }
  fclose(in);
  fclose(out);
  /******************************/
  return 0;
}

供参考:

#include <string.h>
#include <stdio.h>
void  fun(char* a)
{
    /************Begin*************/
    int flg = 0;
    char* p = a;
    while (*p) {
        if (*p == '*' && flg == 0) {
            *a++ = *p++;
        }
        else {
            flg = 1;
            if (*p != '*')
                *a++ = *p++;
            else
                p++;
        }
    }
    *a = '\0';
    /************End**************/
}
int main()
{
    char s[81];
    FILE* in, * out;
    int i;
    printf("Enter a string :\n");
    gets_s(s);
    fun(s);
    printf("The string after deleted:\n");
    puts(s);
    /*****************************/
    in = fopen("in21.dat", "r");
    out = fopen("out21.dat", "w");
    for (i = 0; i < 8; i++)
    {
        fscanf(in, "%s", s);
        fun(s);
        fprintf(out, "%s\n", s);
    }
    fclose(in);
    fclose(out);
    /******************************/
    return 0;
}