簡體   English   中英

我在將十六進制值掃描到C中的數組時遇到問題

[英]I'm having trouble scanning hex values into an array in C

我試圖使用fscanf()將包含十六進制值的.dat文件掃描到一個數組中。 我的程序成功掃描文件並將值放入數組中,但當我將它們打印回控制台時,值會大不相同。 以下代碼是我打開文件並進行掃描的功能。 我正在使用一個test.txt文件,其中包含值“1 2 3 4 5 6 7 8 9 abcdef”。 當我運行程序時,在控制台中打印的是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);
}

Ps: a[10]是一個自動變量而沒有初始化。 因此,不讀取數組條目的值將打印您正在經歷的未初始化的垃圾值。

Pps:我經常看到scanf專家在%符號前添加一個空格以跳過前導空白。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM