今天我在学习指针的时候,练习了一个题目现在分享给大家。
题目的要求是:有一个字符串,包含n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符串。
其实这个题目用指针比较好实现,比如设指针为*p,则从第m个开始复制就是 b[i] = *(p+n-1+i)。
下面我附上我的代码,如有不妥之处请大家指正!
#include <stdio.h>
mygets(char a[])
{
int i;
i = 0;
while((a[i] = getchar()) != '\n')
{
i++;
}
a[i] = '\0';
}
int Strlen(const char *str)
{
int len;
len = 0;
while(*str++)
{
++len;
}
return len;
}
void n_copy(char a[20],char b[20],int n,int m)
{
char *p;
int i;
p = a;
for(i = 0; i + (n-1) < m; i++)
{
b[i] = *(p+n-1+i);
}
b[i] = '\0';
}
int main()
{
char a[20];
char b[20];
int n;
int m;
printf("please input the string!\n");
mygets(a);
printf("please input where you want to copy!\n");
scanf("%d",&n);
m = Strlen(a);
n_copy(a,b,n,m);
printf("%s\n",b);
return 0;
}
下面附上我的运行图