繁体   English   中英

读取二进制文件并保存到列表中

[英]reading binary file and save into an list

我正在使用 C 编码。 我有一个问题要理解为什么我有一个奇怪的输出。 我尝试打印从文件中读取的信息。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct list_element
{
    char word[30];
    int l1;
    int l2;
    struct list_element *next;
} item;
typedef item *list;

int main()
{
    item a;
    list L;
    list root = NULL;
    //item root=NULL;
    FILE *f;
    if ((f = fopen("ImaFile.bin", "rb")) == NULL)
    {
        printf("can't open");
        exit(-1);
    }
    else
        puts("it's open");

    char w[30];
    int g, d;
    while (!feof(f))
    {
        fscanf(f, "%s %d %d", a.word, &a.l1, &a.l2);
        printf("word: %s, l1: %d, l2: %d", a.word, a.l1, a.l2);

        puts(" ");
        L = (list)malloc(sizeof(item));
        fscanf(f, "%s %d %d", w, &g, &d);
        printf("word: %s, l1: %d, l2: %d", w, g, d);
        //  L->word=w;
        strcpy(L->word, w);
        L->l1 = g;
        L->l2 = d;
        L->next = root;
        root = L;
        printf("word: %s, l1: %d, l2: %d", L->word, L->l1, L->l2);
    }

    fclose(f);
    return 0;
}

输出

word: , l1: 0, l2: 0word: , l1: 0, l2: 0word: , l1: 30198988, l2: 0 
word: , l1: 0, l2: 0word: , l1: 0, l2: 0word: , l1: 30198988, l2: 100663296 
word: , l1: 0, l2: 0word: , l1: 0, l2: 0word: , l1: 30198988, l2: 0 
word: , l1: 0, l2: 0word: , l1: 0, l2: 0word: , l1: 13421772, l2: 134217728 
word: , l1: 0, l2: 0word: , l1: 0, l2: 0word: , l1: 13421772, l2: 33554432 
word: , l1: 0, l2: 0word: , l1: 0, l2: 0word: , l1: 13421772, l2: 134217728 

另外,我不明白为什么我的输出中的字符(字符串)数组是无效的,以及为什么 l1 和 l2 的所有数字都为零。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM