It seems the string isn't created. Try this:

Code:
box[i].name = str_create(read);



If you use box[i].name a second time, then str_cpy will work and you don't need to create a new string (or remove the old string via str_remove and then create a new one).