char数组的strlen大于其大小.怎么避免?

Sim*_*imo 0 c++ arrays size pointers

我定义了一个数组:

char arr [1480];

现在,从一个文件中,我准确地读取了1480个字符并放入arr(通过执行arr [i] = c).我知道1480个字符,因为我使用while循环来读取一个字符(istream.get())并在递增索引= 1480时停止.

然而,在那之后,我做strlen(数组)并返回1512.为什么?这种情况只会在某些情况下发生,但并非在所有情况下都会发生,即使每次从文件中读取,我总是读取最多1480个字符.

我怀疑是一个char可能占用超过1个单位(由strlen(arr)返回的单位).如果是这样,我该如何解决这个问题呢?

谢谢

PS:我之前问过一个问题,我的指针被装上了,这就是我有一个长度> 1480的缓冲区(arr)的原因.

Som*_*ude 6

数组大小必须包含字符串终止符.由于您确切地读取了数组的大小,因此您不能(并且不)添加字符串终止符.的strlen功能,和所有其他字符串函数,使用字符串终止符查找字符串的结尾.如果它不在那里它将继续,直到它找到它.

如果字符串中的字符数不超过1480个,则应该有一个大小为1481的数组,最后一个是字符串终止符'\0'.