Remember, these two functions are completely independent, and there is no relationship between who and who.
So the logos such as len in Init function is completely different from len in other functions.
The solution is to use a pointer as a parameter and pass the address.
Such as Voidinit (int * a, int * b, int * c, int * d) {
scanf("%d ",a); /*a is already the address, so don't write it any more &; */
/* followed by something like */
}
init(&; len & amp; Block, buffer, list)