/*有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成
为另一个字符串*/
#include <stdio.h>
#include <string.h>
#define N 5
#define M 2
int main()
{
int fun(char c[],char a[]);
char c[N];
char a[N-M+1];
printf("请输入字符串:\n");
gets(c);
printf("请输入要插入的字符串:\n");
gets(a);
fun(c,a);
printf("输出结果:\n");
puts(c);
}
int fun(char c[],char a[])
{
char *p,*q;
int i;
p = c;
q = a;
for(i = 0;i < (M - 1);i++)//找到位置
{
p++;
}
for(i = 0;i < strlen(a);i++)//开始复制
{
*p = *q;
p++;
q++;
}
}
谭浩强C程序设计(第四版)p291第7题
在编写程序的时候我发现了问题:
我定义的字符数组的长度是5,但是当我输入的字符超过5个时,输出字符数组的内容并不单单只有5个,查阅资料发现C语言并没有数组越界检查,所以会出现这种情况,因此在复制的时候使用了strlen函数。在进行输入的时候要注意避免越界,占用其他的内存可能会出现未知错误。