六六互联

函数类型是指函数返回值的类型之应用案例

break-word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255); line-height: 2;">案例描述】

break-word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255); line-height: 2;">下面定义的函数cut(s,m,n)作用是:从字符串s第m个字符开始截取n个字符。请将代码补充完整。

main()

{ char s[]="goodmorning";int m,n;

  char *cut(   A   ),*p;

  scanf("%d%d",&m,&n);

  p=cut(s,m,n);

  printf("%s",p);}

char *cut(    B     )//定义cut函数

{  int i=0;

   (      );

   sub=(char *)malloc( D );//动态分配内存

   if(m<1||n<1){*sub=0;return sub;}

   while(*(s+i))

        if(   E    )break;

   if(i<m){*sub=0;return sub;}//m超出字符串长度

   for(i=0;i<n;i++)//提取n个字符

   {  (       F      );

      if(*(sub+i)==0)return sub;}

   *(sub+i)=0;return sub;}

函数类型是指函数返回值的类型之应用案例

案例分析】

A、在main函数后面定义的函数必须先声明再使用。

B、B空填写函数的参数及类型。

C、需声明sub变量。其后动态分配了内存,其类型应该是char *

D、需要为sub变量申请n+1个字节的内存单元

E、while循环用于定位到第m个字符

F、将s中的字符逐一复制到sub中

【参考代码】

main()

{ char s[]="goodmorning";int m,n;

  char *cut(char[],int,int),*p;

  scanf("%d%d",&m,&n);

  p=cut(s,m,n);

  printf("%s\n",p);

}

char *cut(char s[],int m,int n)//定义cut函数

{  int i=0;

   static char *sub;

   sub=(char *)malloc(n+1);//动态分配内存

   if(m<1||n<1){*sub=0;return sub;}

   while(*(s+i))//定位到第m个字符

          if(++i==m)break;

   if(i<m)//m超出字符长度

   {  *sub=0;return sub;}

   for(i=0;i<n;i++)//提取n个字符

   { *(sub+i)=*(s+m+i-1);

     if(*(sub+i)==0)return sub;//提取的字符不足

   }

   *(sub+i)=0;//即*(sub+i)='\0'

   return sub;

}


相关推荐