目录
1)首先,str只有char类型的一个字节大小,但是hello是五个字节,所以高级编译器会崩溃。
2) 其次,strcpy要求第一个参数是可以写入的,但是指针不满足这个功能。
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;
}
截图: