第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 );