这道题是什么意思啊,跪求大神解答!!!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并用相应的主函数进行测试。 展开
*s,int m,int n);,其功能是:从字符串s中第m个位置开始,截取含有n个字符的子串;若从m开始剩余的字符不足n个,则截取剩余的所有字符;函数返回所截子串的首地址。编制函数reverse并用相应的主函数进行测试。 展开
3个回答
展开全部
#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;
}
展开全部
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;
}
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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询