La idea es leer linea por linea en vez de caracter por caracter tal como tienes en tu codigo, una vez tienes cada linea, la tokenizas por el caracter que quieres usar como separador (en tu caso la coma , ) y ya tienes lo que sería el substring.
Para eso tienes dos opciones: leer todo el archivo en un buffer, tokenizar por saltos de linea para obtener cada linea y tokenizar cada linea por comas; o bien leer linea por linea y tokenizar por comas.
Lo mas facil es leer linea por linea: para eso usas la funcion fgets (echa un vistazo a tu manual de c para ver los argumentos y valores de retorno de esta funcion). Un trozo de codigo para obtener cada linea:
Código C:
Ver originalFILE *arx;
char *rv, line[MAXLINELENGTH];
if((arx
= fopen("test.txt", "r"))) { while(1) {
if((rv
= fgets(line
, sizeof(line
), arx
))) { //lectura positiva
//volcado para comprovacion
//aqui tokenizas el 'line'
...
}
else {
//se produjo algun error
//recuperas el error y notificas al usuario
//error de lectura
}
//final de archivo, no necesitas notificarlo
}
//en cualquier caso de error finalizas el ciclo
break;
}
}
}
else {
//error de acceso
}
Te he comentado lo mas importante en el codigo, hasta aqui todo ok?
Ahora la funcion para tokenizar la linea. Una vez tienes el 'line' quieres separar la parte de antes de la coma, eso se llama tokenizar. Puedes usar la funcion strtok que sirve exactamente para eso. Ten en cuenta que esta funcion modifica la cadena de texto que le envias; como alternativa tienes la implementacion reentrante strtok_r (no forma parte del estandar, tienes que buscarla por internet o crearla tu mismo, pero es muy facil encontrarla por ahi).
Ahora vamos a la linea de los ..., despues de obtener la 'line' le aplicas el strtok y obtienes directamente lo que buscas (tienes que declarar una nueva variable char *pch):
Código C:
Ver original//aqui tokenizas el 'line'
if((pch
= strtok(line
, ","))) { //ok ya lo tienes
}
Creo que no hay nada mas que comentar, espero que te sea de ayuda
Saludos
vosk