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






  1. #include<stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char fmt[16];
  6. strncpy(fmt, "aaaabbbbccccddddeeee", sizeof(fmt));
  7. printf("strncpy: %s\n",fmt);
  8. strcpy(fmt, "aaaabbbbccccddddeeee");
  9. printf("strcpy: %s\n",fmt);
  10. sprintf(fmt, "%s", "aaaabbbbccccddddeeee");
  11. printf("sprintf: %s\n",fmt);
  12. snprintf(fmt, sizeof(fmt), "%s", "aaaabbbbccccddddeeee");
  13. printf("snprintf:%s\n",fmt);
  14. sscanf("aaaabbbbccccddddeeee", "%s", &fmt);
  15. printf("sscanf: %s\n",fmt);
  16. return 0;
  17. }



可以看出对于字符串赋值将
strcpy   strncpy   snprintf  sscanf sprintf
等几个函数的执行结果进行了比较分析。
执行结果如下:


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

posted on 2017-08-28 11:27  cfzhang  阅读(477)  评论(0编辑  收藏  举报

导航