[C con Clase] Problema al escribir en un archivo valores int superiores a 9

Akio mewtwo_tr en hotmail.com
Vie Nov 23 17:03:13 CET 2007


Buenas,
tengo el siguiente problema:
Estoy usando una función para escribir en un fichero un valor int entrado por teclado y la suma de un numero a este.
En el momento de ver el contenido del fichero en el que escribo, los numero del 0 al 9 me salen bien, pero si en una de las sumas, el valor supera a 9, en el fichero me escribe una representación ascii, por ejemplo, si el valor entrado por teclado es 8, y le sumo 2, la función deberia tener como entrada un 10, y escribirme este al fichero, en lugar de eso, en el fichero me escribe el carácter :  (dos puntos). Si el valor fuera 11, saldria el ;, el 12 me sale como <, y así sucesivamente (siguiendo en ascii, tales valores corresponden a 58, 59, 60, etc).


La función es:

void escriurefitx(int canal, int i, int j)
{
  char hola[5];
	if(j==0){		//Modificació per mostrar des de inici de linia.
		sprintf(hola,"%1c",i);
		lseek(canal, (j), L_SET);
  		write (canal, hola,1);
	}else{
		sprintf(hola,"%5c",i);
		lseek(canal, (5*j)-4, L_SET);
  		write (canal, hola,strlen(hola));
	}
}


la llamada es:

 x=llegir();
 escriurefitx(1,x+4,2);

la función llegir() es:
int llegir()
{     int i;
  read (0, &i, sizeof(int));
  return i;
}

La cual lee un entero de pantalla.


Más información sobre la lista de distribución Cconclase