C语言 字符串拷贝的问题

编写一个程序,将str2中的字符串拷贝到str1中。拷贝要包括字符串终止符。定义如下:

char str1[10];

char str2[100];

提示:拷贝时检查str1的空间是否足够。不够,则能拷多少拷多少(注意str1中必需有字符串终止符),不能越界。不能使用strcpy

自己写一个拷贝函数,代码如下:

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* str1, char* str2)
{
    assert(*str1 != NULL && *str2 != NULL);
    char* p;
    p = str1;
    while (*str2)
    {
        *str1++ = *str2++;
    }
    return p;
}
int main()
{
    char str1[] = "my_hello",str2[]=" ";

    printf("%s\n",my_strcpy(str1, str2));
}

按题意,供参考:

#include <stdio.h>
void  my_strcpy(char* str1, int len1, char* str2, int len2)
{
	int i = 0;
	while (i < len1-1 && i < len2)
	{
		*(str1 + i) = *(str2 + i);
		i++;
	}
	*(str1 + i) = '\0';
}
int main()
{
	char str1[10], str2[100] ;
	int len1 = sizeof(str1) / sizeof(char), len2 = sizeof(str2) / sizeof(char);
	gets(str2);
	my_strcpy(str1, len1, str2, len2);
	puts(str1);
	return 0;
}

 

可以使用strncpy