gpt4 book ai didi

c - 我无法将十六进制值扫描到 C 中的数组中

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

我正在尝试使用 fscanf() 将包含十六进制值的 .dat 文件扫描到数组中。我的程序成功地扫描了文件并将值放入数组中,但是当我将它们打印回控制台时,值却大不相同。下面的代码是我打开文件并扫描它的函数。我现在正在使用一个 test.txt 文件,其中包含值“1 2 3 4 5 6 7 8 9 a b c d e f”。当我运行该程序时,控制台中打印的是 5 个十六进制值,这些值在每次运行后都会发生变化,后跟“0 ffffffff 0 0 0”。

void sim(int bytes, int lines, int sets, int policy){
int i = 0;
int total_Misses = 0;
int total_References = 0;
FILE *f1 = fopen("test.txt", "r");
if (f1 == NULL){
printf("File failed to open");
exit(0);
}
unsigned int a[10];

while (i < 10){

fscanf(f1, "%x", &a[i]);
printf("%x ", a[i]);
i++;
}
}

最佳答案

代码看起来没问题,所有注释都指出输入有问题。我建议您将代码调整为以下内容以捕获错误:

while (i < 10){

if (fscanf(f1, "%x", &a[i])==1) {
printf("%x ", a[i]);
i++;
}
else printf ("Error reading field %d\n", i);
}

P.s.: a[10] 是一个自动变量,没有初始化。因此,不读取数组条目的值将打印您遇到的未初始化的垃圾值。

P.p.s.:我经常看到 scanf 专家在 % 符号前添加一个空格以跳过前导空格。

关于c - 我无法将十六进制值扫描到 C 中的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166801/

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