OK, but you're still reading from a file opened for writing
> fread(p, sizeof(item), 1, in);
> scanf("%s",&p->name);
I thought you just read the information from the file, why are you also reading from the user, and overwriting what you read from the file?