gpt4 book ai didi

c - 如何到达文件中特定行的开头?

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:01 24 4
gpt4 key购买 nike

当我尝试使用 fseek() 返回到文件中一行的开头时,出现错误。

我的代码如下:

fseek(inptr, -bi.biWidth * sizeof(RGBTRIPLE), SEEK_CUR)

bi.biwidth 是 int32_t 类型。

我收到以下错误:

runtime error: unsigned integer overflow: 18446744073709551613 * 3 cannot be represented in type 'unsigned long'

现在我明白了错误,但我不知道如何解决它。请帮忙。

此外,还有什么其他方式可以实现这一点?

最佳答案

无符号数学。

sizeof(RGBTRIPLE) 的值为 3,类型为 size_t,一些 unsigned 类型。 (size_t 在 OP 的机器上是 unsigned long)

-bi.biWidth 具有比 size_t 窄的某些有符号类型的值 -3,可能是 int

相乘时,-3 将转换为 size_t 类型,值为 18446744073709551613u0xfffffffffffffffd

本产品超过size_t

fseek() 需要一个 long,所以使用 long 数学。

fseek(inptr, -bi.biWidth * (long) sizeof(RGBTRIPLE), SEEK_CUR)

RGBTRIPLE 的类型在这里不是问题。 @Dmitri

关于c - 如何到达文件中特定行的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43639564/

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