I'd still love to know why I got the lvalue required error...
It's just how your compiler happened to phrase the error. Here are better phrasings:
clang
test.c:50:14: error: array type 'char [10]' is not assignable
acct.pin = pina;
~~~~~~~~ ^
xlc:
"test.c", line 50.33: 1506-025 (S) Operand must be a modifiable lvalue.
The C language has this requirement for the assignment operator:
An assignment operator shall have a modifiable lvalue as its left operand
and it defines modifiable lvalue as
A modifiable lvalue is an lvalue that does not have array type, does not have an incomplete type, does not have a const-qualified type, and if it is a structure or union, does not have any member (including, recursively, any member or element of all contained aggregates or unions) with a const-qualified type
(emphasis mine)
In your case, acct.pin has array type, and therefore it is not a modifiable lvalue, and therefore it cannot be used on the left side of assignment
(the reasons why it is so go back to the B programming language)