[英]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.