Sizeof char 数组的错误结果

Wrong result through Sizeof a char array

我通过 sizeof() 得到 -858993460 的结果应该是 10。 在 C 中编码:

fscanf(pFile, "%20s", input);

i_sizeOfInput = (sizeof(input) / sizeof(char));

i_sizeOfInput-858993460.

有什么想法吗?

要获取字符串的长度,您必须使用 strlen

In your case i_sizeOfInput = strlen(input);

sizeof 运算符 returns 其操作数的大小(以字节为单位)。

编辑

阅读最近的评论我必须补充一点,以这种方式声明您的输入变量 (char input[] = { ' ' }; )您正在调用 Undefined Behaviour.

如您所见,您正在声明一个数组,其中 space 为 1 个字符并且 fscanf ca return 很多字节将被放置在 [= 的范围之外13=]变量。

您必须将输入定义为与可从文件中读取的字符串的最大尺寸一样大,例如 char input[128] = {'[=14=]'};