字符数组的字符串长度大于其大小.如何避免
strlen of a char array is greater than its size. How to avoid?
定义了一个数组:
arr char [1480],
现在,我从一个文件中读取1480个字符并放入arr(通过执行arr[I]=c)。我知道1480个字符,因为我使用while循环每次读取一个字符(iststream .get()),并在递增索引= 1480时停止。
然而,在那之后,我执行strlen(array),它返回1512。怎么会?这只在某些情况下发生,但不是在所有情况下都发生,尽管每次从file中读取时,我总是读取最多1480个字符。
我怀疑一个字符可能占用超过1个单位(strlen(arr)返回的单位)。如果是这样,我该如何解决这个问题?
感谢PS:我之前问了一个关于我的指针被垃圾的问题,这是我有一个长度> 1480的缓冲区(arr)的原因。
数组大小必须包含字符串结束符。因为你读取的是数组的大小,所以你不能(也不)添加字符串终止符。strlen
函数和所有其他字符串函数都使用字符串结束符来查找字符串的结尾。如果不存在,它将继续查找,直到找到为止。
如果字符串中不超过1480个字符,则应该有一个大小为1481的数组,最后一个是字符串结束符' '
。
试着这样写吗?只是一个小样本
char arr[1481]=0x00; //define all the array with string terminator
memcpy(arr,BufCopyFrom, 1480); //BufCopyFrom is the Buffer being copied and specified to copy 1480 bytes.
希望能有所帮助。
相关文章:
- C++避免重复声明的语法是什么
- 在没有太多条件句的情况下,我如何避免被零除
- 如何重构类层次结构以避免菱形问题
- 大于65535的C++数组[size]引发不一致的溢出
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 查找最接近的大于当前数字的数字的索引
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 以下示例中如何避免代码复制?C++/库达
- Python中的for循环与C++有何不同
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 是否应该在模板化代码中完全避免const
- 我应该避免多重实现继承吗
- 为了方便起见,我应该避免公开私有字段变量吗
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 避免在C++中重复子类定义
- "Inverse SFINAE"避免模棱两可的过载
- 如何避免在仅标头库中C++类/变量重定义
- Python 集合.计数器,如何避免重复查找
- 是否应避免从非常量迭代器转换为常量迭代器?
- 字符数组的字符串长度大于其大小.如何避免