中易网

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

答案:6  悬赏:80  
解决时间 2021-02-10 03:33
有一个字符串,包含n个字符,写一函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串,。大
最佳答案
个人猜想你想实现的功能是将a[]字符串中从m到n的字符都替换为b中的字符吧

1
2
3
4
5
6
7
for(i=m;(i<n) && (i < 80); i++) //输入的n有可能大于80,不加限制会内存越dao界
{
    if(i >= 0) //输入的m有可能是负数,不加限制会内存越界
    {
        *(a+i) = *(b + i%3); //b只有3个字符,因此这里需要取余运算防止越界
    }
}
全部回答
一、char b[80] ; //要与a相同长度 二、 int j=0; for( i=m-1;i<n;i++ ) b[j++]=a[i] ; b[j]='\0'; printf("%s", b );
方法有很多种,我就说用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); 突然发现你说用指针写,你应该知道数组名称就是指针吧
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; }
#include using namespace std; void main() { int n; char *a,*b; a=(char*)malloc(n*sizeof(char)); b=(char*)malloc(n*sizeof(char)); for(int i=0;i>a[i]; for(i=0;i
  • 5楼网友:废途浑身病态
  • 2021-02-09 11:01
应该是*(a+i)=*b++; 在循环条件里还要加上当b中内容复制完后也应该停止循环!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯