char *cut(char *s,int m,int n)

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:34:41
从s 的第m个位置开始,获取s后面的n个字符;如果n大于s剩余的字符数目,则将s后面的全部字符获取,反之,则获取从第m个到第n个;
并编写主函数测试!
急!!!!!!
谢了!
题目就是这么滴!

这个函数你得再传进来一个指针,作为目标字符串的首地址,否则函数内要么申请内存但不能释放,容易造成内存泄漏;要么要修改*s内容。

好吧,既然题目是这样,那势必在m+n<s的情况下斩断s了。

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

char *cut(char *s, int m, int n)
{
char *p=s, *address=NULL;
int i=0;

for(i=0; i<m; i++)
{
if(*(p+i)=='\0')
{
printf("Error. string is too short.\n");
return address;
}
}
address=p=p+m-1;

for(i=0; i<n; i++)
{
if(*(p+i)=='\0')
{
return address;
}
}

*(p+i)='\0';
return address;
}

int main(void)
{
char s[100], *aftercut=NULL;
int start, length;

printf("Input a string shorter than 99 characters(no space, please):\n");
scanf("%s", s);

printf("How many characters do you want to cut?\n");
sca