error de conversion

Hola! os cuento mi problema a ver si alguien me puede ayudar.
Dispongo de un archivo en una SD, el cual abro y visualizo los datos que tiene, es de la siguiente forma:

,45.78634,5.674225,65,
,67.34577,4.652546,48,
,23.42675,3.678456,23,

Cada valor entre comas le doy un nombre: latitud,longitud,cantidad,
Lo que quiero hacer ahora es pasar la cadena de caracteres a real y a entero, y que a su vez lo imprima. El error viene cuando en vez de salirme el número convertido me salen ceros: 0.0000,0.0000
Os pongo el programa, a ver si veis cual es mi fallo.

GRACIAS.

#include <SD.h>
const int chipSelect = 53; // en Mega, 53 es el pin CS (en la mayoria 10)
//------------------------------------
int campo=0;
char dato;
char latitud[10];
char longitud[10];
char cantidad[10];
int pos;
float lat;
float lon;
int cant;

void setup(){

Serial.begin(9600);
Serial.print("Initializing SD card...");
pinMode(53, OUTPUT); // se debe configurar como salida pq sino la libreria SD no funcionará
if (!SD.begin(chipSelect)) { //comprueba si la tarjeta está presente y puede ser inicializada
Serial.println("Card failed, or not present"); //si entra es que la tarjeta no se inicializa
return; // no se hace nada más
}
Serial.println("card initialized.");
File dataFile = SD.open("llc.txt"); // se abre el archivo(sólo se puede abrir uno al mismo tiempo)
if (dataFile) { //si el archivo esta abierto, se escribe en el
while (dataFile.available()) {
Serial.write(dataFile.read());
}
dataFile.close();
}
else {
Serial.println("error opening gps.txt"); //si no se ha abierto el archivo da error
}
//-------------------------------------
while (dataFile.available()){
while (campo<4){
if(dato==','){
campo++;
pos=0;
}
else{
if(campo==1){
latitud[pos++]=dato;
}
if(campo==2){
longitud[pos++]=dato;
}
if(campo==3){
cantidad[pos++]=dato;
}
}
dato=dataFile.read();
}
}
}

void loop(){

lat=atof(latitud); //convierto latitud a float
lon=atof(longitud);
cant=atoi(cantidad);
Serial.print(lat,4); //imprimo lat con 4 decimales
Serial.print(',');
Serial.println(lon,4);
}

Vale, me acabo de dar cuenta que los ceros salen porque no recoge el dato de latitud y longitud.
Haciendo el mismo programa pero con:
Serial.print(latitud);
Serial.print(',');
Serial.println(longitud);

obtengo espacio en blanco a ambos lados de la coma. Que ocurre?? por que no me almacena el valor de latitud y longitud??