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

标签 c parasoft

在我的源代码(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/

相关文章:

c - 在C中添加公因数

将时间(由字符串表示)从一个时区转换为另一个时区

c - 浮点变量-c 错误

c - 如何去掉静态分析报告中的 "tainted parameter"?

c - Parasoft 跳过所有文件而不进行测试

C从文件中读取字符串内容并比较相等性

无法使用多线程在我的树莓派上编译我的 C 程序

java - parasoft SOA 测试 - 如何在 parasoft 中调用 Java 代码

hudson - 如何在Hudson中集成Parasoft(JTest)?

c++ - 质量错误传递 sizeof casted return