有一个字符串,包含n个字符,写一函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串,。大

有一个字符串,包含n个字符,写一函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串,。大神们看看哪里出错了

#include<stdio.h>

int n,m;

char str[100],string[100];

void a(char str[])

{

int t=0,i;

for(i=m-1;i<=n;)                /*改写了,更为简洁*/

  string[t++]=str[i++];

}

int main()

{

gets(str);

n=strlen(str);            /*用此系统函数来求取str的串长度更为方便、可靠*/

scanf("%d",&m);

a(str);

puts(string);

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-03

个人猜想你想实现的功能是将a[]字符串中从m到n的字符都替换为b中的字符吧

for (i=m;(i<n) && (i < 80); i++) //输入的n有可能大于80,不加限制会内存越界
{
    if (i >= 0) //输入的m有可能是负数,不加限制会内存越界
    {
        *(a+i) = *(b + i%3); //b只有3个字符,因此这里需要取余运算防止越界
    }
}

第2个回答  推荐于2017-12-16
b[] 用 b[80];
n 用 strlen() 算出来,不能输入。
假定 m 从 1起算。
复制时要含字符串结束符 ,便可用 %s 格式 输出。
#include<stdio.h>
int main()
{
char a[80];
char b[80]="abc";
int n,m,i;
gets(a);
n=strlen(a);
printf("input m, m <= %d\n",n);
scanf("%d",&m);
for(i=m-1;i<=n;i++) *(b+i-m+1)=*(a+i);
printf("%s\n",b);
return 0;
}本回答被提问者和网友采纳
第3个回答  2015-06-25
方法有很多种,我就说用C语言实现的两种方法,测试能用!
int m=3;
char src[]="0123456789";
char dst[10]={0};
strcpy(dst,src);
//1
memcpy(dst,src+m,strlen(src)-m);
printf"%s\n",dst);
//2
for (int i=m;i<strlen(src);i++)
{
dst[i-m]=src[i];
}
printf("%s\n",dst);

突然发现你说用指针写,你应该知道数组名称就是指针吧
第4个回答  2016-01-03
一、char b[80] ; //要与a相同长度
二、
int j=0;
for( i=m-1;i<n;i++ )
b[j++]=a[i] ;
b[j]='\0';
printf("%s", b );
相似回答