[C con Clase] lectura de caracteres y transformación a int.
dani
ddagnino en gmail.com
Mar Feb 27 12:13:16 CET 2007
Hola a todos,
como siempre os agradezco a todos las ayudas de esta lista de correo.
Mirad lo que me ocurre es que he echo un programa que lee un archivo del tipo:
blablabla
int int int
int int int
int int int
blablabla
int int int
int int int
int int int
y lo que hace es almacenar los ints en una matriz. Esto lo hace pasando las líneas de números a ints con la función atoi y lee las líneas con getline.
El programa funciona bien salvo cuando llega al ultimo numero del archivo ya que este no lo lee. Si alguien me puede echar una mano pues gracias.
La función es la siguiente:
#include <iostream>
using namespace std;
void cad_num (char *cad1, int *cad2, int &elem2){
int i,j,k,i1,i2;
char *charaux;
// Ej: cad1[17]=' -1 2 50 -30'
// cad2[4]={-1,2,50,-30}
// elem2=4
elem2=-1; //Contador del nº de números en la cadena.
for (i=0;i<strlen(cad1);i++){
if (isspace(cad1[i])==0){ //Si no hay un espacio es que hemos alcanzado el principio nº.
i1=i; //Donde empieza el numero.
for (j=i+1;j<strlen(cad1);j++){
if (isspace(cad1[j])!=0){ //Si hay un espacio es que hemos alcanzado el final del nº.
i2=j; //Donde acaba el numero.
charaux=new char [i2-i1]; //Creamos una cadena con longitud justa para meter el numero.
for (k=i1;k<i2;k++) charaux[k-i1]=cad1[k]; //Guardamos el numero en formato char.
cad2[++elem2]=atoi(charaux); //Transformamos el char a int.
delete[] charaux;
break;
}
}
i=j; //Seguimos desde aquí.
}
}
}
Un saludo.
Dani.
Más información sobre la lista de distribución Cconclase