字符串复制函数测试

来源:互联网 发布:psv重构数据库365 编辑:程序博客网 时间:2024/06/05 07:53

VC下的测试结果:

int _tmain(int argc, _TCHAR* argv[]){char src[] = "1234567890";char dst[5];//strcpy(dst, src);//越界//strcpy_s(dst, 5, src);//缓冲区太小,程序异常退出//strncpy_s(dst, 5, src, 10);//缓冲区太小,程序异常退出//strncpy_s(dst, 5, src, 5);//缓冲区太小,程序异常退出//strncpy_s(dst, 5, src, 4);//字符串截断,末尾自动补上null,输出1234strncpy_s(dst, 5, src, _TRUNCATE);//字符串截断,末尾自动补上null,输出1234printf("dst=%s\n", dst);system("pause");return 0;}

推荐使用strncpy_s 加 _TRUNCATE用法。


GCC好像没有实现strncpy_s和strcpy_s,通常使用strncpy就可以了

int main(int argc, char* argv[]){char src[] = "1234567890";char dst[5] = {0};strncpy(dst, src, sizeof(dst)/sizeof(char) - 1);printf("dst=%s\n", dst);return 0;}

如果超出第三个参数指定的大小,会自动截断,但是dst末尾不会自动补上null,所以dst应该先清零


原创粉丝点击