C关于字符串赋值的一些方法比较

来源:互联网 发布:电脑美化软件知乎 编辑:程序博客网 时间:2024/06/07 12:34
#include<stdio.h>#include <string.h>int main(){char fmt[16];strncpy(fmt, "aaaabbbbccccddddeeee", sizeof(fmt));printf("strncpy: %s\n",fmt);strcpy(fmt, "aaaabbbbccccddddeeee");printf("strcpy:  %s\n",fmt);sprintf(fmt, "%s", "aaaabbbbccccddddeeee");printf("sprintf: %s\n",fmt);snprintf(fmt, sizeof(fmt), "%s", "aaaabbbbccccddddeeee");printf("snprintf:%s\n",fmt);sscanf("aaaabbbbccccddddeeee", "%s", &fmt);printf("sscanf:  %s\n",fmt);return 0;}
可以看出对于字符串赋值将
strcpy   strncpy   snprintf  sscanf sprintf
等几个函数的执行结果进行了比较分析。
执行结果如下:

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

原创粉丝点击