c - 文本的最大大小是否包含空(停止)字符

标签 c text max-size

我想定义一个宏来指示记录文本的最大大小。 像这样:

#define RECORD_TEXT_MAX_SIZE 255 /*the max size of the text which get from one record*/

然后像这样使用:

char text[RECORD_TEXT_MAX_SIZE+1];

用户必须定义​​数组大小“RECORD_TEXT_MAX_SIZE+1”以包含空字符。

但我想我可以这样定义

 #define RECORD_TEXT_MAX_SIZE 256 /*the max size of the text which get from one record*/

然后像这样使用:

char text[RECORD_TEXT_MAX_SIZE];

我不能决定使用哪个。

你能给我一个建议吗?

一般规范是什么?

最佳答案

这确实是一个偏好问题,但我的意见是:

#define RECORD_TEXT_MAX_SIZE   255

char text[RECORD_TEXT_MAX_SIZE + 1];

原因是 RECORD_TEXT_MAX_SIZE 仍然指示缓冲区中可以容纳多少实际 字符,同时始终为空终止符留出空间。

问题或对此的反驳是,大多数 strn... 函数(采用长度参数)包括限制时的空终止符要写入多少字节。

关于c - 文本的最大大小是否包含空(停止)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17288683/

相关文章:

Peter Norvig 的拼写校正器的 Haskell 版本慢得令人难以置信

ruby - 解析单个键/值的字符串的 "ruby way"是什么?

对象指针的 C++ vector - max_size()

c - C编程中的"Program received signal SIGSEGV, Segmentation fault"

c - 使用指针将一个字符串复制到另一个字符串的程序不产生任何输出

"SaveDC"和 "RestoreDC"函数不能在不同的消息处理代码中使用吗?

c - 如何在 C 中获得不同时区的 Epoch 日期和时间?

java - 在java中获取列表元素的最后一部分

java - 可以通过 TCP 套接字发送的最大字符大小