编写一个函数int fun(char a[ ],char b[]),其功能是:删除a指向的字符串中所有数字字符并将至保存到b数组

作者&投稿:丑幸 (若有异议请与网页底部的电邮联系)
请编写一个函数void fun(char a【】,char b【】,int n)~

不对吧,你题上的函数是3个参数,怎么后来的题目变成2个了。你再看看。。。

#include
#include
void fun(char a[],int k,int n)
{
int i;
for(i=k;i<strlen(a)-n;i++)
a[i]=a[i+n];
a[i]='\0';
}
int main()
{
char a[]="abcdefgh";
fun(a,3,2);
printf("%s
",a);
return 0;
}

  #include<stdio.h>
  #include<stdlib.h>
  #include<string.h>

  //如果返回-1,a字符串中没有数字
  int fun(char a[], char b[])
  {
  int num=-1;
  int ib=0;
  char *p=a;
  int isfirst=1;//是否为非数字字符第一行
  while(*p)
  {
  if(*p >= '0' && *p <= '9')
  {
  b[ib] = *p;
  ib++;

  //删除a的内容或者替换'\n'
  if(isfirst || *(p-1) == '\n')
  {
  strcpy(p, p+1);
  p--;
  }
  else
  {
   *p = '\n';
  }
  }
  else
  {
   isfirst=0;
  }
  p++;
  }

  b[ib] = 0;
  if(ib > 0)
  {
   num = atoi(b);
  }

  //写入结果文件myfile.out
  FILE *fp=fopen("myfile.out", "w");
  fprintf(fp, "a=%s\n", a);
  fprintf(fp, "b=%s\n", b);
  fprintf(fp, "num=%d\n", num);
  fclose(fp);
  return num;
  }
  

  int main()
  {
  char a[]="48CTYP9R6";
  char b[16];

  int num=0;
  num=fun(a, b);

  printf("a=%s\n", a);
  printf("b=%s\n", b);
  printf("num=%d\n", num);

  return 0;
  }