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

中,将所删的数字字符组成一个整数保存在变量num中并作为返回值带出,数组a中连续非数字字符作为一独立行。在主函数中分别输入测试数据:48CTYP9R6,调用函数fun并将结果按行在显示屏输出并依次写入结果文件myfile.out中。
试编写程序并用主函数予以验证。
结果:
a=”CTYP\nR\n”
b=”4896”
num=4896

  #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;
  }追问

有个错误- -

追答

请说明哪里的错误

追问

已解决 还是谢谢你

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网