今日刷题之strcpy的用法和注意事项

目录

1.strcpy和strcpy_s的区别

2.请问以下代码有什么问题:

1)首先,str只有char类型的一个字节大小,但是hello是五个字节,所以高级编译器会崩溃。

2)  其次,strcpy要求第一个参数是可以写入的,但是指针不满足这个功能。

3.修改后的代码


1.strcpy和strcpy_s的区别

char *strcpy(char *dest, const char *src)

strcpy:把src中的内容拷贝给dest

errno_t __cdecl strcpy_s(char* _Destination, rsize_t _SizeInBytes, char const* _Source);

strcpy_s:vs2019编译器认为strcpy不安全,所以建议使用strcpy_s,而strcpy_s只是比strcpy多了一个要拷贝的数目。

2.请问以下代码有什么问题:

int main()
{
char a;
char *str=&a;
strcpy_s(str,5,"hello");
printf(str);
return 0;
}

截图:

1)首先,str只有char类型的一个字节大小,但是hello是五个字节,所以高级编译器会崩溃。

2)  其次,strcpy要求第一个参数是可以写入的,但是指针不满足这个功能。

3.修改后的代码

int main()
{
	char a[20];
	strcpy_s(a,6,"hello");//算\0的位置所以是6
	
	printf("%s\n", a);
	return 0;
}

截图:

猜你喜欢

转载自blog.csdn.net/weixin_62456756/article/details/128228696
今日推荐