调查报告:整理并用实验比较分析strncpy、strcpy_s、 strncpy_s、strlcpy、strncat、strcat_s、 strncat_s、 strlcat等函数的异同
包含在头文件 string .h 中。
Strncpy: 函数原型:char *strncpy( char *dest, const char *src, std::size_t count );
比较:strcpy 的可以添加参数,表示复制 n 个字符,而不是像 strcpy 寻找”\0”把所有字符拷贝。特别的,若 n 大于待复制的字符串,‘\0’填充至 n 个。参数来源为用户输入,故安全性不好。(相对 strcpy 较安全)并且注意,如果 src 的前 n 个字节不含 NULL 字符,则结果不会以 NULL 字符结束。
Strlcpy:
原型:strlcpy(char *dst, const char *src, size_t siz);
比较:类似 strncpy,但是,使用 strlcpy,就不需要我们去手动负责 \0 了,仅需要把 sizeof(dst) 告之 strlcpy 特别的,strlcpy 并不属于 ANSI C,至今也还不是标准。
strcpy_s:
函数原型:
errno_t __cdecl strcpy_s(char*_Destination,rsize_t _SizeInBytes,char const* _Source); strlcpy
功能比较:复制字符串_Source 中的字符到字符串_Destination,其中限制了大小为 _