gpt4 book ai didi

c - 从文件 fscanf 格式读取十六进制数据编译时警告

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:44 25 4
gpt4 key购买 nike

我正在从文件中读取一些数据。格式规定为

ASCII text with UNIX-style line-endings, a series of 32-bit signed integers in hexadecimal.

例如

08000000

我正在使用 fscanf 读取此数据。

long data_size;

FILE *fp;
fp=fopen("test01.bin", "r"); // open for reading
if (fp==0) {cerr << "Error openeing file"<<endl; return 1;}

fscanf(fp, "%x", &data_size);

我的测试文件一切正常,但我收到编译时警告,

warning: format ‘%x’ expects type ‘unsigned int*’, but argument 3 has type ‘long int*’

然而,十六进制值是无符号的并且被转换为长剂量这件事吗?只要将最高有效位作为通知标志就可以了?或者我最终会遇到问题吗?还是我的理解有偏差?

谢谢

最佳答案

你应该支持与警告状态相同的指针类型,否则如果你想将代码移植到 long 具有的其他架构(例如:64 位架构),你将遇到严重的麻烦与 int 不同的大小。如果您使用指针,这尤其棘手。 (我曾经有一个错误源于正是这个问题)

只需使用 int data_size 就可以了。

关于c - 从文件 fscanf 格式读取十六进制数据编译时警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523212/

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