#include
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;
}
个人猜想你想实现的功能是将a[]字符串中从m到n的字符都替换为b中的字符吧
for (i=m;(i{
if (i >= 0) //输入的m有可能是负数,不加限制会内存越界
{
*(a+i) = *(b + i%3); //b只有3个字符,因此这里需要取余运算防止越界
}
}
b[] 用 b[80];
n 用 strlen() 算出来,不能输入。
假定 m 从 1起算。
复制时要含字符串结束符 ,便可用 %s 格式 输出。
#include
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;
}
方法有很多种,我就说用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
dst[i-m]=src[i];
}
printf("%s\n",dst);
突然发现你说用指针写,你应该知道数组名称就是指针吧
一、char b[80] ; //要与a相同长度
二、
int j=0;
for( i=m-1;i
b[j]='\0';
printf("%s", b );