C将字符串拷贝到二维数组问题

问题遇到的现象和发生背景

c 将字符串拷贝到二维数组,崩馈了,不知道哪里出了问题,请大家伙解答一下,谢谢

char temp[5][20];
char* s = "hello";
strcpy_s(temp[0], strlen(s), s);
printf("%s", temp[0]);
运行结果及详细报错内容

img

就这几行代码吗?
strcpy_s(temp[0], strlen(s)+1, s);

strcpy_s(temp[0],20, s);
strlen(s)的值是5,太小了,都不包含\0的,而s实际长度有6,所以拷贝过程中越界了
所有带_s结尾的函数,要求传入一个长度参数,它可以保证在赋值过程中不会越界(不会将无关内存胡乱修改),但是要拷贝的内容多于你传入的长度限制时,会抛个异常,而不是自动截断

谢谢 2位的解答,如释重负,编程真不容易。