欢迎来到轩宇的博客

回溪照轩宇,广陌临梧楸。

m_strcpy

自己实现strcpy函数

#include <stdio.h>
#include <assert.h>	//如果它的条件返回错误,则终止程序执行

char *m_strcpy(char* str1, char* str2)
{
	assert(str1 != NULL);
	assert(str2 != NULL);
	
	if (str1 == NULL||str2 == NULL)
	{
		return NULL;
	}
	
	char *ret = str2;		
	while((*str2++ = *str1++) != '\0');
	return ret;
}

int main(void)
{
	char str1[] = "hello world123123!";//fgets(word, num, stdin);
	char str2[sizeof(str1)] = {' '};

	m_strcpy(str1, str2);
	printf("str2: %s %d\n", str2, sizeof(str2));
	
	return 0; 
} 

代码2:

char *m_strcpy(char dest[],char src[])
{
	int i = 0;
	while(src[i] != '\0')
	{
		dest[i] = src[i];
		i++;
	}
	dest[i] = '\0';
	
	return dest;
}


关于这个代码的问题:

#include <stdio.h>
#include <assert.h>	//如果它的条件返回错误,则终止程序执行

char *m_strcpy(char* str1, char* str2)
{
	assert(str1 != NULL);
	assert(str2 != NULL);
	
	if (str1 == NULL||str2 == NULL)
	{
		return NULL;
	}
	
	char *ret = str2;		
	while((*str2++ = *str1++) != '\0');
	return ret;
}

int main(void)
{
	char str1[] = "hello world123123!";//fgets(word, num, stdin);
	char str2[] = {'  '};

	m_strcpy(str1, str2);
	printf("str2: %s %d\n", str2, sizeof(str2));
	
	return 0; 
} 

为啥str2的大小为1,还是输出了复制后的结果。


posted @ 2019-09-02 17:18  轩宇a_a  阅读(135)  评论(0编辑  收藏  举报