#include<stdio.h>#include <string.h>int main(){char fmt[16];strncpy(fmt, "aaaabbbbccccddddeeee", sizeof(fmt));printf("strncpy: %s ",fmt);strcpy(fmt, "aaaabbbbccccddddeeee");printf("strcpy: %s ",fmt);sprintf(fmt, "%s", "aaaabbbbccccddddeeee");printf("sprintf: %s ",fmt);snprintf(fmt, sizeof(fmt), "%s", "aaaabbbbccccddddeeee");printf("snprintf:%s ",fmt);sscanf("aaaabbbbccccddddeeee", "%s", &fmt);printf("sscanf: %s ",fmt);return 0;}
可以看出对于字符串赋值将
strcpy strncpy snprintf sscanf sprintf
等几个函数的执行结果进行了比较分析。
执行结果如下:

可以看到,对于指定长度的字符串赋值来说,snprintf方法可以自动拼接一个' '
而strncpy虽然是带了长度参数的,但是不会自动拼接' '
strcpy sprintf sscanf功能函数并不会将其截断,当超出了容器范围的时候会向后覆盖写数据。