Asi puede que funcione pero no creo que sepas porque funciona; no es la forma correcta, el %s es para ingreso de cadenas.. Despues de cada scanf deberias agregar este bucle:
Hola! Si estas trabajando sobre linux, despues de saber C yo te recomendaria este libro: "Programacion en Linux de Kurt Wall".... y si te interesa algo de videojuegos podes programar con SDL
Es por lo que te dije antes... Si bien vos le pasas la direccion donde hay un '2', no le estas pasando solo el 2 sino que le estas pasando un puntero a esa posicion(por ser un arreglo). Con el ejemplo anterior atof recibe estas cadenas: "2ieurut26aa" y "26aa", y procesa la parte inicial de la cadena mientras haya un numero
Hola! atof no convierte un numero en caracter a double, sino que convierte la porcion inicial de la cadena en double, es decir si en la porcion inicial hay numeros consecutivos ("123avc") se va a convertir esos numero como un solo double
Ejemplo cuando vos ingresas esta cadena: "ashf2ieurut26aa" En primera instancia atof no hace nada ya que la porcion inicial no es un numero. Luego cuando le pasas la direccion del primer "2" no solo le estas pasando a atof el '2', sino que le estas pasando la cadena: "2ieurut26aa". Aca atof convierte el 2... y finalmente le pasas a atof: "26aa", aca la porcion inicial tiene los numeros "26" por lo tanto convierte ese numero