这道题是什么意思啊,跪求大神解答!!!C语言的题目

函数cut的原型为:void*cut(char*s,intm,intn);,其功能是:从字符串s中第m个位置开始,截取含有n个字符的子串;若从m开始剩余的字符不足n个,则... 函数cut的原型为:void *cut(char
*s,int m,int n);,其功能是:从字符串s中第m个位置开始,截取含有n个字符的子串;若从m开始剩余的字符不足n个,则截取剩余的所有字符;函数返回所截子串的首地址。编制函数reverse并用相应的主函数进行测试。
展开
 我来答
百度网友006959291
2013-06-27 · TA获得超过222个赞
知道答主
回答量:198
采纳率:0%
帮助的人:178万
展开全部
#include <stdio.h>
#include <string.h>

#define N   200

char* cut(char s[], int m, int n);

int main()
{
    int m = 0, n = 0;
    char s[N] = { 0 };
    char* p = NULL;

    printf("请输入一个字符串,长度小于%d:\n", N);
    scanf("%s", s);

    printf("请输入截取的位置:");
    scanf("%d", &m);

    printf("请输入截取的长度:");
    scanf("%d", &n);

    p = cut(s, m ,n);
    if ( p )
    {
        printf("\n你截取到的字符为:\n%s\n\n", p);
    } 
    else
    {
        printf("\n截取字符串失败!\n\n");
    }

    return 0;
}

char* cut(char s[], int m, int n)
{
    int len = strlen(s);

    if ( len<=0 || m<0 || m >= len || n<=0 )
    {
        return NULL;
    }

    if ( m+n < len )
    {
        *(s+m+n) = '\0';
    }

    return s+m;
}

hu0904
2013-06-27 · TA获得超过222个赞
知道小有建树答主
回答量:510
采纳率:0%
帮助的人:455万
展开全部
void* cut(char * s,int m,int n){
int size=strlen(s);
if(m<1){
if(n>=s)return s;
s[n+1]='\0';
return s;
}
if(n<1){
s[0]='\0';
return s;
}
if(s=<m+n)return &s[m];
s[m+n+1]='\0';
return &s[m];
}//不重新分配内存
void * cut2(const char *s,int m,int n){
char *p;
int size=strlen(s),i;
if(m<1){
size=min(size,n);
p=new char[size+1];
for( i=0;i<size;i++)p[i]=s[i];
p[size]='\0';
return p;
}
if(size<=m){
p=new char;
*p='\0';
return p;
}
size=min(size-m,n);

p=new char[size+1];
for( i=0;i<size;i++)p[i]=s[m+i];
p[size]='\0';
return p;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
test_pop
2013-06-27 · TA获得超过376个赞
知道小有建树答主
回答量:332
采纳率:100%
帮助的人:237万
展开全部
#include <stdio.h>
#include <string.h>
void *cut(char *s, int m, int n)
{
 int i, len;
 char *tmp;
 len = strlen(s);
 
 while(*s != '\0')
 {
  
  m--;
  s++;
  if(m==0)
  {
   tmp=s; //保留第m个字符的指针
   break;
  }
 }
 if(m+n >= len)
 {
  return tmp;
 }
 else
 {
  for(i=0; i<n; i++)
  {
   tmp[i]=*s;
   s++;
  }
  tmp[n]='\0'; //字符串结束标志
  return tmp;
 }
}

int main()
{
 int m, n;
 char *ptr;
 char buff[20] = {0};
 printf("please input a string:");
 gets(buff);
 printf("please input m, n:");
 scanf("%d, %d", &m, &n);
 ptr = cut(buff, m, n);
 printf("After cut,buff is %s.\n", ptr);
 return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式