字符数组的字符串长度大于其大小.如何避免

strlen of a char array is greater than its size. How to avoid?

本文关键字:何避免 大于 数组 字符串 字符      更新时间:2023-10-16

定义了一个数组:

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.

希望能有所帮助。