因为总是见到C字符串长度相关的错误, 所有定个规范出来, 有利于减少错误.

关键在于C字符串有个结尾0, 处理时需要注意.

定义字符串长度有两种方式, 一种是用字符串的大小, 一种是字符串的长度.
字符串的大小即内存空间的大小, 而串长度加1才是所需空间.  

 例  “hello”共5个字符,在内存占6个字节   字符串长度5

也就是说sizeof()和strlen()的区别. sizeof() = strlen + 1;

正确:
char str[MAX_SIZE];
char str[MAX_LEN + 1];

错误:
char str[MAX_SIZE + 1];
char str[MAX_LEN];

如strncpy()之类的函数处理字符串时, 如果要省略结尾0时, 应如下:

strncpy(dst, src, MAX_LEN);

strncpy(dst, src, MAX_SIZE - 1);

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2022-12-23
  • 2022-02-06
猜你喜欢
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
  • 2021-12-19
  • 2021-09-18
相关资源
相似解决方案