gpt4 book ai didi

c - 如何修复 Parasoft 检查的错误

转载 作者:行者123 更新时间:2023-12-04 18:00:44 26 4
gpt4 key购买 nike

在我的源代码(C 语言)中,有一行如下:

char line[1000] = "";
fgets(line, sizeof(line), file)

当我使用 parasoft 检查时,我收到两个错误:

In 'fgets' function call, do not pass long casted to int expression as '2' function argument
The type 'unsigned long' of function argument number '2' does not match declared type 'int'

我在源代码中发现这些行没有问题,所以我不知道如何修复这些错误。你能给我一个建议吗?

最佳答案

fgets接受 int 作为它的第二个参数。 (恕我直言,这是一个缺陷)

sizeof 返回类型为 size_t 的值,在您的情况下它似乎是 unsigned Iong 的别名。问题在于 unsigned long 可能(太大)而无法转换为 int

在这里您无能为力。要消除错误,您可以使用强制转换:

fgets(line, (int)sizeof(line), file);

请注意,如果您在某个时候决定将该数组更改为动态分配的数组,或者如果您将代码折射为不同的函数,那么您对 ​​sizeof 的使用可能会给您带来麻烦。

关于c - 如何修复 Parasoft 检查的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com