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=]'};
我通过 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=]'};