Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/06/2012, 14:54
grillomutante
 
Fecha de Ingreso: junio-2012
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Extraer int desde un string c++

Buenas, soy nuevo en el foro pero estoy desesperado. Hace algunos años estuve programando algo en C y ahora mismo no me acuerdo de nada, espero encontrar algo de ayuda. Utilizo este hilo abierto para no llenar el foro, pues el tema es -remotamente, ya que uno de mis problemas es al traducir una variable de entero a char *- similar:

Estoy intentando hacer un programa que dado un fichero de entrada prueba.txt lea cada línea, cuente el número de caracteres, espacios incluídos, de cada línea (tendrán un máximo de 1500) y genere un fichero de salida, prueba2.txt con las mismas líneas del fichero de entrada, con el mismo texto, salvo que delante de cada línea aparezca el número de caracteres de dicha línea, con cuatro dígitos.

Por ejemplo, si el fichero de entrada es el siguiente:

HOLA
HOLA HOLA
HOLA HOLA HOLA
HOLA HOLA HOLA .

El fichero de salida debería de ser:

0004HOLA
0009HOLA HOLA
0015 HOLA HOLA HOLA
0023 HOLA HOLA HOLA .

Para traducir de numérico a alfanumérico no he utilizado atoi pues mi compilador no lo acepta, pero el sprintf ya me vale. Ambas funciones me dejan un molesto \0. Además tampoco sé cómo pasar del número entero 4 a la cadena '0004'. Este es el código que llevo hecho

Cita:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
FILE *fichero_in;
FILE *fichero_out;

char *entrada;
char *salida;

int longitud;
int i;

char *longitud_c;

entrada = (char*)malloc(1000);
salida = (char*)malloc(1000);
longitud_c = (char*)malloc(4);

/* Abre ficheros */
fichero_in = fopen("d:/prueba.txt","r");
if (fichero_in == NULL) exit(1);

fichero_out = fopen("d:/prueba2.txt","a");
if (fichero_out == NULL) exit(1);

/* Por cada línea del fichero... */
while (feof(fichero_in) == 0)
{
/* Lee Fichero */
fgets(entrada,999,fichero_in);

/* Longitud de la línea */
longitud = strlen(entrada);

/* No contar el caracter \n del final */
longitud = longitud - 1;

/* Pasar de int a char */
sprintf(longitud_c, "%d", longitud);

/* Concatenar la longitud con la línea */
strcat(salida, longitud_c);
strcat(salida, entrada);

/* Grava fichero salida */
fputs(entrada, fichero_out);

}

fclose(fichero_in);
fclose(fichero_out);
free(entrada);
free(salida);
free(longitud_c);
return 0;
}
(no funciona, en la variable salida me guarda caracteres chungos). Me podríais echar una mano diciéndome qué hay mal y cómo pasar de 7, 15 o 337 a '0007', '0015' o '0337' respectivamente. Muchas gracias por adelantado