I'm in stack with C coding. I've got a problem to understand why I have a strange outpu. I try to print the information that I read from the file.
#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;
}
OUTPUT
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
Also, I can't understand why array of char (string) it's void in my output, and why all numbers for l1
and l2
are zero.