[C con Clase] Trivial

Steven Richard Davidson stevenrichard.davidson en gmail.com
Jue Sep 13 17:37:05 CEST 2007


Hola Alejandro,

On 9/13/07, Alejandro <alepelexo en yahoo.es> wrote:
> Gracias por tu ayuda. Ahora uso fopen("puntuaciones.txt", "a"), pero el problema es distinto. Ahora me da un problema Windows, como si estuviera accediendo a algo que no puedo. Te paso el código de la función que crea el archivo, escribe en él, y lo cierra:
>

[CORTE]

> El problema que me dá es el típico: "Trivia.exe ha detectado un error y debe cerrarse. Informe a Microsoft..." El prolema es que creo saber dónde está el fallo pero no como solucionarlo. En el cuarto fputs(), escribo: "fputs((char*)aciertos, archivo);" y creo que el error está en converitr un int en un char*, pero es que no se como pasar el int al fichero de otra forma.
>

No puedes convertir un entero a una cadena de esta manera. Lo que
estás haciendo es "engañar" a C/C++ diciendo que el valor en
'aciertos' es una dirección de memoria. Como estás haciendo este
cambio de tipo explícitamente, C++ no se responsabiliza de lo que
quieres hacer. Recuerda el lema de C/C++: "El programador sabe lo que
hace".

La solución es representar el valor en 'aciertos' a una serie de
caracteres que representan cada dígito del números y guardarla en un
array de 'char'. Para esto, usa la función 'sprintf()'. Por ejemplo,

char szAciertos[32]="";
...
sprintf( szAciertos, "%d", aciertos );
fputs( szAciertos, archivo );


Espero que esto te ayude.

Steven




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