Pues me he encontrado muchas veces que alguna funcion devuelve un int i se trata de pasarlo a char pero sin variar su contenido, por ejemplo al hacer esto.
int x;
x=system(dir");
char y[300];
*y=(char)x;
FILE * F;
F=fopen("prueva.txt","w");
fputs(y,F);
close(F);
pues en casos como este system te devuelve un int y quieres pasarlo a char pero si lo pasas a char lo necesario esque el valor quedara intacto cosa que no hace, no me digais de usar otra alternativa porque yo no quiero que me den el pez, yo quiero aprender a pescar.
¿Sabeis algun metodo para convertir sin que varie el valor?
gracias.
Hay una función NO ESTÁNDAR llamada itoa() la puedes revisar aquí
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
Personalmente te recomiendo que hagas tu propia función itoa que sea estándar.
EDIT:
Aquí tienes un código en C++ que convierte de entero a string:
string itoa(int n){
string rtn;
for(rtn="";n>0;rtn.insert(rtn.begin(),n%10+'0'),n/=10);
return rtn;
}
Para empezar el fragmento que pones es C. No tienes porque convertirlo antes de enviarlo al archivo ya que puedes hacerlo directamente con:
x = system("dir");
/* ... */
fprintf(F, "%d\n", x);
Para leerlo solo tienes que utilizar fscanf.
string itoa(int n){
string rtn;
for(rtn="";n>0;rtn.insert(rtn.begin(),n%10+'0'),n/=10);
return rtn;
}
Un problema aqui es que devolveria una cadena vacia (no es necesaria la asignacion inicial ya que todo objeto de la clase string inicia asi) si el numero pasado fuera el cero.
Otra opcion es:
string itoa(int n)
{
string s;
char digit[] = "0123456789";
do {
s = digit[n % 10] + s;
}while ((n /= 10) > 0);
return s;
}
Otra forma es utilizando clase stringstream:
string itoa(int n)
{
stringstream ss;
string s;
ss << n;
ss >> s;
return s;
}
Un saludo