Think your problem is solved.
Just wanted to comment on 2 things,
1. Be careful abt the length when you use scanf(), or follow what AD says.

2. the design part. If you have a function that is meant to take the name as input it would be unecessarry to pass it the whole structure (and thus make it dependent on the struct). You could just pass it the pointer to char* where he should store the name. Like this:
void getString( char* name ) ;
Advantage is clear of course.
1. your test function (getString in my code) doesn't need to depend on Person and it doesn't.
2. You can reuse the same function to get serial, address as well (anything that has the same format).
E.g.
typedef struct info{
char name[20];
char address[50];
char serial[15];
} PERSONAL;
typedef struct person{
PERSONAL individual[50];
int number;
} PERSON;
void getString( char* str, int len )
{
char* ptr = 0;
fgets( str, len, stdin);
// now remove the '\n' if it exists in the input buffer
if( (ptr = strchr(str,'\n')) != NULL)
*ptr = 0;
}
int main()
{
PERSON person ;
printf("\"%s\"\n", person.individual[0].name ) ;
getString( &(person.individual[0].name[0]), sizeof(person.individual[0].name) ) ;
printf("\"%s\"\n", person.individual[0].name ) ;
getString( &(person.individual[0].serial[0]), sizeof(person.individual[0].serial) ) ;
getString( &(person.individual[0].address[0]), sizeof(person.individual[0].address) ) ;
return 0 ;
}