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 ",fmt);
  8. strcpy(fmt, "aaaabbbbccccddddeeee");
  9. printf("strcpy: %s ",fmt);
  10. sprintf(fmt, "%s", "aaaabbbbccccddddeeee");
  11. printf("sprintf: %s ",fmt);
  12. snprintf(fmt, sizeof(fmt), "%s", "aaaabbbbccccddddeeee");
  13. printf("snprintf:%s ",fmt);
  14. sscanf("aaaabbbbccccddddeeee", "%s", &fmt);
  15. printf("sscanf: %s ",fmt);
  16. return 0;
  17. }



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


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

原文地址:https://www.cnblogs.com/cfzhang/p/8587733948e652b5db8162ddcea6eb7e.html