Título: ¿Por qué no funciona correctamente este programa? Ficheros inside Publicado por: NathanD en 25 Febrero 2013, 18:38 pm Tengo que hacer un programa que coja un fichero de texto y lo divida en otros varios archivos, de extensión .001, .002, etc. En cuántas partes quiere dividirlo, lo introduce el usuario. Mi programa funciona a veces sí, a veces no...
Os dejo el bucle principal del código: Código:
Título: Re: ¿Por qué no funciona correctamente este programa? Ficheros inside Publicado por: rir3760 en 25 Febrero 2013, 19:13 pm En el calculo de las partes no consideras si el numero de caracteres en el archivo no es múltiplo del tamaño de cada parte, en ese escenario perderías la ultima.
No necesitas de tres llamadas a función para generar el nombre, en su lugar puedes utilizar sprintf de esta forma: Código El nombre del archivo generado se almacena en el array "fich_dest_nombre" pero tu llamas a fopen usando el array "fitx_dest_izena", aquí no se si es un error del programa o de traducción. Caso similar con "fitxategi_orig". Mejor publica el código fuente del programa (reducido al mínimo, por supuesto). Un saludo Título: Re: ¿Por qué no funciona correctamente este programa? Ficheros inside Publicado por: NathanD en 25 Febrero 2013, 19:19 pm En el calculo de las partes no consideras si el numero de caracteres en el archivo no es múltiplo del tamaño de cada parte, en ese escenario perderías la ultima. Ah sí, se me ha ido la cabeza con la traducción del euskera al castellano, jajaja.No necesitas de tres llamadas a función para generar el nombre, en su lugar puedes utilizar sprintf de esta forma: Código El nombre del archivo generado se almacena en el array "fich_dest_nombre" pero tu llamas a fopen usando el array "fitx_dest_izena", aquí no se si es un error del programa o de traducción. Caso similar con "fitxategi_orig". Mejor publica el código fuente del programa (reducido al mínimo, por supuesto). Un saludo Título: Re: ¿Por qué no funciona correctamente este programa? Ficheros inside Publicado por: NathanD en 25 Febrero 2013, 20:20 pm En el calculo de las partes no consideras si el numero de caracteres en el archivo no es múltiplo del tamaño de cada parte, en ese escenario perderías la ultima. ¿Entonces se trata de que sea múltiplo o no? Entonces, debería primero ver los caracteres que hay en el fichero, y ofrecer al usuario la posibilidad de dividir el archivo en cantidades que sean divisoras del número de caracteres, ¿no?No necesitas de tres llamadas a función para generar el nombre, en su lugar puedes utilizar sprintf de esta forma: Código El nombre del archivo generado se almacena en el array "fich_dest_nombre" pero tu llamas a fopen usando el array "fitx_dest_izena", aquí no se si es un error del programa o de traducción. Caso similar con "fitxategi_orig". Mejor publica el código fuente del programa (reducido al mínimo, por supuesto). Un saludo Título: Re: ¿Por qué no funciona correctamente este programa? Ficheros inside Publicado por: leosansan en 25 Febrero 2013, 20:30 pm Aunque ya te conteste en el otro foro, por si te sirve ahí va eso:
Cita de: NathanD Buenas, bueno pues después del anterior problema se me presenta éste. Quiero dividir un fichero en varias partes, por ejemplo: fichero.txt -> fichero.txt.001, fichero.txt.002, fichero.txt.003, etc. Supongo que habrás querido decir fichero.txt -> fichero.001.txt, fichero.002.txt, fichero.003.txt, etc. ya que en caso contrario pierdes el "tipo" de fichero. Citar Donde estoy atascado es en dividir el contenido del primer fichero ........................ El bucle principal del código que he hecho es éste, que en lugar de dividir el primer fichero, copia todo el contenido. ........................................ Bueno, yo no soy experto ni en C ni en ficheros ni en nada, pero este código hace lo que pretendes: Código
El secreto está, además de como crear las partes, en "situarse" en una posición y leer hasta ahí para posteriormente escribir y volver al punto dónde nos quedamos y volver a repetir el proceso. O sea, mírate bien la instrucción fseek que ya te había mencionado en el otro tema ;-) Saluditos!. P.D: ¿Me puedes pasar vía "mp" la página de los emoticones?. Gracias. :laugh: Título: Re: ¿Por qué no funciona correctamente este programa? Ficheros inside Publicado por: NathanD en 25 Febrero 2013, 22:58 pm Ya sé por qué no funcionaba mi código, no era más que un error tonto... En cada vuelta del bucle, a la posición del primer carácter que se debía copiar, le sumaba la variable equivocada. Le estaba sumando el número de partes en las que se iba a dividir el fichero, en lugar de la cantidad de caracteres que se debían de copiar a cada ciclo. Es decir, en lugar de
Código: pos += num_partes; Tenía que poner Código: pos += cantidad_por_fich Muchas gracias a todos por vuestra atención, de veras, vuestra dedicación es impagable ;) ;) |