To add to what Greg has said, with an array, you don't need to use the "address of" operator at all as the C specification says that the name of an array is a pointer to the first element. So this:
scanf("%s", &name[0]);
is the same as this:
scanf("%s", name);
And this:
scanf("%s", &name);
is too as the address of the array variable is the same as the address of the first character in it. Looks odd? Yes - but C is a very old language!
Try this and you'll see what I mean:
char name[20] = "OriginalGriff";
printf("%s\n", name);
printf("%s\n", &name[0]);
printf("%s\n", &(name[0]));
printf("%s\n", &name);
They all print the same thing, so use the clearest one - the first! (And the last will rightly give you a warning on some compilers!)
In fact you can print the pointer values, and you'll see they are all the same:
printf("%p\n", name);
printf("%p\n", &name[0]);
printf("%p\n", &(name[0]));
printf("%p\n", &name);